自定义ListView适配器不显示文本

时间:2014-11-26 16:56:34

标签: android listview android-arrayadapter android-adapter

我有一个ListView,我填充了<string-array name="list_items">values/strings.xml的列表,如下所示,我创建了Array Adapter,其中BaseAdapter延伸listView 。我预计当我运行App时。根据下面的item.xml resources看到 public class MyAdapter extends BaseAdapter { private Context context; private ArrayList<String> mArraList; public MyAdapter(Context context, ArrayList<String> mArraList) { this.context = context; this.mArraList = mArraList; } @Override public int getCount() { // TODO Auto-generated method stub return this.mArraList.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return this.mArraList.get(position); } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub if (convertView == null) { LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); convertView = mInflater.inflate(R.layout.item, null); } ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon); TextView txtTitle = (TextView) convertView.findViewById(R.id.secondLine); TextView txtCount = (TextView) convertView.findViewById(R.id.firstLine); for (int i = 0; i < MyAdapter.this.getCount(); i++) { txtCount.setText(MyAdapter.this.getItem(i).toString()); } return convertView; } } 被填充为以下内容:

1 - 一个图标“整个列表项的相同图标”, 2 - 我从<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:padding="6dip" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_alignParentBottom="true" android:layout_alignParentTop="true" android:layout_marginRight="6dip" android:contentDescription="TODO" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/secondLine" android:layout_width="fill_parent" android:layout_height="26dip" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_toRightOf="@id/icon" android:ellipsize="marquee" android:singleLine="true" android:text="Description" android:textSize="12sp" /> <TextView android:id="@+id/firstLine" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@id/secondLine" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_alignWithParentIfMissing="true" android:layout_toRightOf="@id/icon" android:gravity="center_vertical" android:text="Example application" android:textSize="16sp" /> 文件夹中检索到的字符串, 3 - 和“描述”一词“这个词对于整个列表项应该相同”。

但是当我运行App时会发生什么。第二步根本没有显示。我在代码中遗漏了什么。

MyAdapter

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity_layout);

        mListView = (ListView) findViewById(R.id.listview);
        listItems = getResources().getStringArray(R.array.list_items);
        mArraList = new ArrayList<String>();

        for (int i = 0; i < listItems.length; i++) {
            mArraList.add(listItems[i]);
        }

        adapter = new MyAdapter(getApplicationContext(), mArraList);
        mListView.setAdapter(adapter);
    }
}

item.xml

{{1}}

MainActivity

{{1}}

2 个答案:

答案 0 :(得分:0)

首先删除for循环,我认为它没有任何用途。

然后尝试设置文本 -

txtCount.setText((String)mArraList.get(position));

这应该有效。你的布局和其他一切都很好。

答案 1 :(得分:-1)

我想你忘了使用上下文在适配器中初始化你的相对布局,这里是代码

MyAdapter extends BaseAdapter {

private Context context;
private ArrayList<String> mArraList;
private LayoutInflater layoutInflater;

public MyAdapter(Context context, ArrayList<String> mArraList) {
  this.context = context;
  this.mArraList = mArraList;
  this.layoutInflater=LayoutInflater.from(context);
  }

 @Override
 public int getCount() {
 // TODO Auto-generated method stub
    return this.mArraList.size();
 }

 @Override
 public Object getItem(int position) {
 // TODO Auto-generated method stub
    return this.mArraList.get(position);
 }

 @Override
 public long getItemId(int position) {
 // TODO Auto-generated method stub
 return position;
 }

 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
 // TODO Auto-generated method stub
 if (convertView == null) {
    convertView = layoutInflater.inflate(R.layout.item, null);
 }

 ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
 TextView txtTitle = (TextView) convertView.findViewById(R.id.secondLine);
 TextView txtCount = (TextView) convertView.findViewById(R.id.firstLine);

 for (int i = 0; i < MyAdapter.this.getCount(); i++) {
     txtCount.setText(MyAdapter.this.getItem(i).toString()); 
 }
return convertView;
 }
 }