我知道这是一个转贴,但我现在一直试图让它工作多年(小时),我真的无法理解现有的答案。 我想知道的是:如何编辑此代码以使其有效?我正在尝试从两个不同的数组中填充两个文本视图。
只有第二个适配器被读取,第一个适配器的textview保持空白。
任何帮助都将不胜感激。
public void run () {
if (t.getState() == Thread.State.TERMINATED) {
adapter2 = new ArrayAdapter<String>(getApplicationContext(), R.layout.listlook, R.id.txtl2, names);
setListAdapter(adapter2);
adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.listlook, R.id.txtl1, comments);
setListAdapter(adapter);
return;
} else {
h.postDelayed(this, 1000);
}
}}
, 1000);
}
提前致谢。
Usercomments.xml中的Listview
<ListView
android:id="@+android:id/list"
android:layout_width="match_parent"
android:layout_height="150dp" >
</ListView>
listlook.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/txtl1"
android:paddingLeft="2dp"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="#0000FF"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/txtl2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txtl1"
android:gravity="bottom|right"
android:paddingLeft="5dp"
android:text="TextView"
android:textColor="#5C002E"
android:textSize="15sp" />
</RelativeLayout>
listlook只是我在listview中使用的布局?真的不知道我在做什么。
答案 0 :(得分:4)
您告诉列表视图您要使用adapter2
,然后告诉它您要使用adapter
- 它一次只能读取一个适配器的数据< /强>
如果要显示两个列表中的数据,可以执行以下操作。
首先,将两个列表组合成一个类,并构建一个List<Post>
,而不是有两个数组:
public class Post {
String mName, mComment;
public Post(String name, String comment) {
mName = name;
mComment = comment;
}
public String getName() {
return mName;
}
public String getComment() {
return mComment;
}
}
然后,编写一个知道如何显示Post
项目的适配器:
public class PostAdapter extends BaseAdapter {
private Activity mActivity;
private List<Post> mPosts;
public TweetstreamAdapter(Activity activity, List<Post> posts) {
mActivity = activity;
mPosts = posts;
}
@Override
public int getCount() {
return mPosts.size();
}
@Override
public Post getItem(int position) {
return mPosts.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Post post = getItem(position);
if (convertView == null) {
convertView = mActivity.getLayoutInflater().inflate(R.layout.listlook, parent, false);
}
((TextView)convertView.findViewById(R.id.txtl1)).setText(post.getName());
((TextView)convertView.findViewById(R.id.txtl2)).setText(post.getComment());
return convertView;
}
}
然后在您的活动中,您将适配器设置为:
setListAdapter(new PostAdapter(this, posts));
其中posts
是List<Post>
个帖子。
注意:您需要确保已更新以匹配您的ID。如果您正确构建TextView
布局中的listlook
个条目的ID与适配器正在搜索的ID相匹配。更新代码以相应地匹配您的ID。Post
个对象列表,这应该只是插入。
更新2:您可以构建一个这样的列表,假设两个数组(名称/注释)长度相同:
List<Post> posts = new ArrayList<Post>();
for(int i = 0; i < names.length; i++) {
posts.add(new Post(names[i], comments[i]);
}
答案 1 :(得分:0)
您有两行setListAdapter()
。第二次覆盖第一次。如果您有两个ListViews
,请执行以下操作:
listView1.setListAdapter(adapter2);
listView2.setListAdapter(adapter);