現在、表示されていないリストビューに値を入力するのが難しいです。リストビューがonPostExecuteの後に設定されない
まず、データベーステーブルから値を取得し、それらをonPostExecute内の配列に格納します。
LikedListAdapter listAdapter = new LikedListAdapter(context, R.layout.liked_list_main, restID, restName, restAddr1, restAddr2, restImgPath);
lvPlaces.setAdapter(listAdapter);
これらの値は、正常に私のListAdapterに渡されます。
public LikedListAdapter(Context context, int resource, String[] restID, String[] restName, String[] restAddr1, String[] restAddr2, String[] restImgPath) {
super(context, resource);
this.context = context;
this.resource = resource;
this.restID = restID;
this.restName = restName;
this.restAddr1 = restAddr1;
this.restAddr2 = restAddr2;
this.restImgPath = restImgPath;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LinearLayout likedItemsView;
if(convertView==null) {
likedItemsView = new LinearLayout(getContext());
String inflater = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater vi;
vi = (LayoutInflater)getContext().getSystemService(inflater);
vi.inflate(resource, likedItemsView, true);
}
else {
likedItemsView = (LinearLayout) convertView;
}
ImageView restaurantImg = (ImageView)likedItemsView.findViewById(R.id.listItemThumbImg);
TextView restaurantName =(TextView)likedItemsView.findViewById(R.id.listItemTitle);
TextView restaurantDesc = (TextView)likedItemsView.findViewById(R.id.listItemSubText);
restaurantName.setText(restName[position]);
restaurantDesc.setText(restAddr1[position] + ", " + restAddr2[position]);
Picasso
.with(getContext())
.load(restImgPath[position])
.into(restaurantImg);
return likedItemsView;
}
ただし、私がアプリケーションを実行すると、Listviewは空です。デバッグすると値が正常に私のlistAdapterに渡されることがわかります(デバッグ時に、コンストラクタに表示されている値が表示されます)。ただし、getViewメソッドには決してぶつからず、値は各リストビューウィジェットに設定されます。
私は誤解していますか、ある時点でgetViewメソッドを呼び出す必要がありますか?前もって感謝します。
add listAdapter.notifyDataSetChanged(); after setAdapter – ZeroOne
'setAdapter'の下で' listAdapter.notifyDataSetChanged() 'を試したことがありますか? –
@ GustavoCondeこれを追加しましたが、リストビューにはまだ値が設定されていません。デバッガとgetViewメソッド内のブレークポイントを使用してプロセスを実行しますが、決してヒットしません。 –