我有一个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}}
答案 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;
}
}