2017-04-19 3 views
0

現在、表示されていないリストビューに値を入力するのが難しいです。リストビューが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メソッドを呼び出す必要がありますか?前もって感謝します。

+0

add listAdapter.notifyDataSetChanged(); after setAdapter – ZeroOne

+0

'setAdapter'の下で' listAdapter.notifyDataSetChanged() 'を試したことがありますか? –

+0

@ GustavoCondeこれを追加しましたが、リストビューにはまだ値が設定されていません。デバッガとgetViewメソッド内のブレークポイントを使用してプロセスを実行しますが、決してヒットしません。 –

答えて

1

あなたは

同様にgetCount()

メソッドをオーバーライドしていましたか?そうでなければ、行のサイズを返します。 Ex-

@Override 
public int getCount() { 
    return restName.length; 
} 

あなたの問題が解決されることを願っています。すでに人口のリストは、その後、

adapter.notifyDataSetChanged()

方法を使用する場合。

+0

私はgetCount()メソッドが含まれていませんでした。私は今追加し、それは完全に動作します。どうもありがとうございました。 –

0
LikedListAdapter listAdapter = new LikedListAdapter(context, R.layout.liked_list_main, restID, restName, restAddr1, restAddr2, restImgPath); 
lvPlaces.setAdapter(listAdapter); 
listAdapater.notifyDataSetChanged(); // <-- add this 
+0

これを追加しましたが、リストビューにはまだ値が設定されていません。デバッガとgetViewメソッド内のブレークポイントを使用してプロセスを実行しますが、決してヒットしません。 –

関連する問題