В основном я пытаюсь скрыть и показать текст в строке списка, когда я нажимаю кнопку в строке списка. Я добавил onClick() для кнопки внутри метода getView(), а затем вызвал notifyDataSetChanged(). Но это не работает. Никаких изменений в видимости текста. Вот мой код Адаптера:notifyDatasetChanged не работает внутри метода getView() для пользовательского адаптера в Android
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;
}
}
Может кто-нибудь, пожалуйста, сообщите, что я делаю неправильно здесь. Спасибо заранее.
-Arindam.
Нет смысла вызывать здесь 'notifyDataSetChanged();' для вашей цели –
Можете ли вы рассказать, что еще я могу вызвать, чтобы обновить полный вид? –
Я все еще не понимаю, каково ваше требование здесь? –