无法看到我的清单项目

时间:2012-11-23 15:42:35

标签: android listview actionbarsherlock

我在视图上找到一个空列表,没有任何错误,但只是在我的数组不为空时获取列表empry。

我的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); 

坦克帮助

1 个答案:

答案 0 :(得分: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子句,因为tx永远不应该是null

  3. 您已将吐司设置为显示0秒...尝试使用标准化时间范围:

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

  4. 添加

      

    是布局是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>