我在视图上找到一个空列表,没有任何错误,但只是在我的数组不为空时获取列表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);
坦克帮助
答案 0 :(得分: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上面。
这个逻辑应该有效:
TextView tx = (TextView) mView.findViewById(R.id.textView);
//if this view is on main screen
if (tx == null) {
tx = ((TextView) mView);
}
但是如果你要制作一个自定义适配器,你应该已经知道你的布局是什么,并且不需要if子句,因为tx
永远不应该是null
。
您已将吐司设置为显示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>