したがって、基本的な考え方は、2 つの ListViewがあるということです。
最初: 2 つのリストビューが両方とも表示されます。最初のリストビューには適切に入力され、2 番目のリストビューは空ですが、既に表示されています
最初の ListView の行をクリックした後:データはデータベースから取得され、2 番目のリストに適切に配置されます。
質問と問題:
データは適切にフェッチされていますが、2 番目の ListViewは空のままで、getView()はまったく呼び出されません。
1-ページを更新せずに2番目のListViewをロードする方法はありますか?
2-行が正しく表示されないため、getView() は呼び出されませんか? どうすればこの問題を回避できますか?
notifyDataSetChanged ()を使用してから、 2 番目の ListViewを検証してみました
どんな援助にも感謝します
コード
CustomAdapter.java
public class CustomAdapter extends ArrayAdapter<ListItem>
{
LayoutInflater inflater;
List<ListItem> items;
public CustomAdapter(Context context, int textViewResourceId, List<ListItem> items2) {
super(context, textViewResourceId);
this.items = items2;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return items.size();
}
@Override
public ListItem getItem(int position) {
return ((CustomAdapter) items).getItem(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ListItem holder;
final ListItem item = items.get(position);
View vi=convertView;
if(vi==null){
vi = inflater.inflate(R.layout.popup_toping, null);
holder = new ListItem();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.Check = (CheckBox) vi.findViewById(R.id.check);
vi.setTag(holder);
}else{
holder = (ListItem) vi.getTag();
}
holder.text.setText(item.t);
holder.Check.setChecked(item.IsChecked);
return vi;
}
}
主な活動での実装
List<ListItem> items = new ArrayList<ListItem>();;
items.add(new ListItem(){{
t= c.getString("first_text");
IsChecked = false;
}});
CustomAdapter listadapter = new CustomAdapter(context, R.layout.popup, items);
myList.setAdapter(listadapter);
listadapter.notifyDataSetChanged();
myList.invalidate();