0

ビューで空のリストを取得しています。エラーはありませんが、配列が空でないときにリストを空にするだけです。

私のxmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLa"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ListView android:layout_width="fill_parent"   
      android:layout_height="fill_parent"   
      android:id="@+id/mainListView"/>  

    <ImageView
        android:id="@+id/iconremove"
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:scaleType="centerCrop"
         android:src="@drawable/removeicon"
         android:visibility="gone"
          />

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_marginLeft="10dip"
        android:layout_weight="1"
        android:textSize="20dip" />

</LinearLayout>

私のアダプター

public class ListRssAdpter extends ArrayAdapter {
    private Context mContext;
    private int id;
    private List<String> items;
    public ListRssAdpter(Context context, int textViewResourceId, List<String> list) {
        super(context, textViewResourceId, list);
        mContext = context;
        id = textViewResourceId;
        items = list;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        View mView = v;
        if (mView == null) {
            LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mView = vi.inflate(id, null);
        }
        TextView tx = (TextView) mView.findViewById(R.id.textView);
        //if this view is on main screen
        if (tx == null) {
            tx = ((TextView) mView);
        }
        tx.setText(items.get(position));
        return mView;

    }
}

そしてメインコード:

        ListView    lv = (ListView) findViewById(R.id.mainListView ); 

        lv.setTextFilterEnabled(true);

        DBAdapter dbAdpter=new DBAdapter(this);
        ListRssLinkAndTitle=(ArrayList)dbAdpter.getWantedItemsList(this,"link","RssTitle","Rtl");//get wanted items from db 
        ArrayList<String> listKeys=new ArrayList<String>();
        for (int j=0;j<ListRssLinkAndTitle.size();j++)
            listKeys.add(ListRssLinkAndTitle.get(j).title);
        ListRssAdpter   listAdapter = new ListRssAdpter(this, R.layout.titlesrss, listKeys);


        if (ListRssLinkAndTitle.isEmpty())
            Toast.makeText(this.getApplicationContext(),  getResources().getString(R.string.emtyRssList),0).show();
        lv.setAdapter(listAdapter); 

支援用タンク

4

1 に答える 1

1

潜在的な問題がいくつか見られます。

  1. LinearLayout には水平方向があり、ListView は画面と同じ幅です。したがって、ImageView または TextView は表示されません。最も簡単な解決策は、LinearLayout の方向を垂直に設定することです。

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linearLa"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    

    しかし、ListView のパラメーターを画面いっぱいに設定したので、他には何も表示されません... 繰り返しますが、簡単な解決策は、ListView の上に小さい項目を配置することです。

  2. このロジックは機能するはずです:

    TextView tx = (TextView) mView.findViewById(R.id.textView);
    //if this view is on main screen
    if (tx == null) {
        tx = ((TextView) mView);
    }
    

    ただし、カスタム アダプターを作成している場合は、レイアウトが何であるかを既に知っている必要があり、if 句を使用する必要はありませtxnull

  3. トーストを 0 秒間表示するように設定しました... 標準化された時間枠を使用してみてください。

    Toast.makeText(this, getString(R.string.emtyRssList), Toast.LENGTH_SHORT).show();
    

添加

はい、レイアウトは R.layout.titlesrss です

上記の XML が行レイアウトである場合、メインの ListView の各行内に ListView を作成しています...行レイアウトは次のようになります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLa"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/iconremove"
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:scaleType="centerCrop"
         android:src="@drawable/removeicon"
         android:visibility="gone"
          />

    <TextView
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="left|center_vertical"
        android:layout_marginLeft="10dip"
        android:layout_weight="1"
        android:textSize="20dip" />

</LinearLayout>
于 2012-11-23T17:17:34.030 に答える