В основном я пытаюсь скрыть и показать текст в строке списка, когда я нажимаю кнопку в строке списка. Я добавил onClick() для кнопки внутри метода getView(), а затем вызвал метод notifyDataSetChanged(). Но это не работает. Отсутствие изменений в видимости текста. Вот мой собственный код адаптера:
public class ListAdapter extends BaseAdapter {
private Context context;
private List<String> mListQuestion = null;
private List<String> mListAnswer = null;
ViewHolder holder = null;
boolean flag = false;
public ListAdapter(Context context, List<String> question, List<String> answer ) {
this.mListQuestion = question;
this.mListAnswer = answer;
this.context = context;
}
@Override
public Object getItem(int position)
{
return mListQuestion.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getCount() {
return mListQuestion.size();
}
@Override
@SuppressWarnings("deprecation")
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null)
{
LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.list_faq_item, null);
holder = new ViewHolder();
holder.tvQuestion = (TextView) convertView.findViewById(R.id.text);
holder.tvAns = (TextView) convertView.findViewById(R.id.anstext);
holder.ivArrow = (Button)convertView.findViewById(R.id.arrow_expand);
convertView.setTag(holder);
}
else
{
holder = (ViewHolder) convertView.getTag();
}
holder.tvQuestion.setText(mListQuestion.get(position));
holder.tvAns.setText(mListAnswer.get(position));
holder.ivArrow.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (flag == false)
{
Logger.d("arrow clicked when flag is false");
holder.tvAns.setVisibility(View.VISIBLE);
holder.ivArrow.setBackgroundResource(R.drawable.up_arrow);
flag = true;
}
else if (flag == true)
{
Logger.d("arrow clicked when flag is true");
holder.tvAns.setVisibility(View.GONE);
holder.ivArrow.setBackgroundResource(R.drawable.down_arrow);
flag = false;
}
notifyDataSetChanged();
}
});
return convertView;
}
static class ViewHolder {
TextView tvQuestion;
TextView tvAns;
Button ivArrow;
}
}
Может кто-нибудь, пожалуйста, скажите, что я делаю неправильно здесь. Заранее спасибо.
-Ариндам.
notifyDataSetChanged();
для вашей цели - person M D   schedule 06.12.2015dataSet
.notifyDataSetChanged()
будет работать, только если вы вносите изменения вdataSets
. Что в вашем случаеmListQuestion
иmListAnswer
- person Paresh P.   schedule 06.12.2015