Android 如何使用自定义适配器
我知道这是一个转载,但我一直试图让这个工作了好长时间(小时)现在,我真的无法理解现有的答案。 我想知道的是:如何编辑此代码以使其正常工作?我试图从两个不同的数组中填充这两个文本视图 只有第二个适配器被读取,第一个适配器的textview保持为空 任何帮助都将不胜感激Android 如何使用自定义适配器,android,android-arrayadapter,listadapter,Android,Android Arrayadapter,Listadapter,我知道这是一个转载,但我一直试图让这个工作了好长时间(小时)现在,我真的无法理解现有的答案。 我想知道的是:如何编辑此代码以使其正常工作?我试图从两个不同的数组中填充这两个文本视图 只有第二个适配器被读取,第一个适配器的textview保持为空 任何帮助都将不胜感激 public void run () { if (t.getState() == Thread.State.TERMINATED) {
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);
}
public void run(){
if(t.getState()==Thread.State.TERMINATED){
adapter2=new ArrayAdapter(getApplicationContext(),R.layout.listlook,R.id.txtl2,names);
setListAdapter(适配器2);
adapter=new ArrayAdapter(getApplicationContext(),R.layout.listlook,R.id.txtl1,注释);
setListAdapter(适配器);
返回;
}否则{
h、 邮递延迟(本次为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中使用的布局?我真的不知道我在做什么。您有两行代码
setListAdapter()
。第二个覆盖第一个。如果您有两个列表视图
,请执行以下操作:
listView1.setListAdapter(adapter2);
listView2.setListAdapter(adapter);
您有两行带有
setListAdapter()
。第二个覆盖第一个。如果您有两个列表视图
,请执行以下操作:
listView1.setListAdapter(adapter2);
listView2.setListAdapter(adapter);
您告诉列表视图要使用
adapter2
,然后告诉它要使用adapter
-它一次只能从一个适配器读取数据
如果要显示两个列表中的数据,可以执行以下操作
首先,将两个列表合并到一个类中,并构建一个列表
,而不是两个数组:
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;
}
}
其中帖子
是帖子的列表
注意:您需要确保在listlook
布局中有TextView
条目,这些条目的ID与适配器正在搜索的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]);
}
List posts=new ArrayList();
for(int i=0;i
您告诉列表视图您要使用适配器2
,然后告诉它您要使用适配器
-它一次只能从一个适配器读取数据
如果要显示两个列表中的数据,可以执行以下操作
首先,将两个列表合并到一个类中,并构建一个列表
,而不是两个数组:
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;
}
}
其中帖子
是帖子的列表
注意:您需要确保您的listlook
布局中的TextView
条目的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]);
}
List posts=new ArrayList();
for(int i=0;i
一个适配器连接到一个ListView。我猜您的活动只有一个ListView,因为每个ListView只能有一个适配器,所以您正在用第二个适配器替换第一个适配器。这看起来只有第二个适配器被使用。如果您想同时显示这两个适配器,您可能需要添加另一个ListView,或者将两个列表放在一个列表中,例如nd重试。嘿,Daniel,我正在使用一个带有两个文本视图的自定义listview,但我有点自学成才,无法理解关于这类事情的现有代码。感谢您的回复:)我认为问题在于,您不理解listView适配器背后的想法。listView没有特定的TESxView计数。您可以显示listLook布局吗?一个适配器连接到listView。我猜您的活动只有一个listView,因为每个listView只能有一个适配器,所以您要用秒1。看起来只有第二个适配器被使用。如果你想同时显示这两个,你可能想添加另一个ListView,或者将两个列表都放在一个列表中,然后重试。嘿,Daniel,我使用的是一个自定义ListView和两个TextView,但我有点自学成才,无法理解关于这类事情的现有代码。谢谢你的帮助他回答:)我认为问题在于,您不理解listView适配器背后的想法。ListView没有特定的TESxView计数。可以显示listLook布局吗?我正在用PHPMySQL数据库中的数据填充列表。答案信息丰富,但不太熟悉在一个活动中使用不同的类,我是否按原样创建类?我将把调用JSON对象的方法放在哪里?您可以使用我上面添加的代码,使用现有字符串数组创建Post
对象列表。检索数据是一个完全不同的问题;如果您不确定如何做,我建议您进行更多的研究,如果您仍然无法找到答案,请打开一个新问题。如果您正在从SQL数据库读取数据,您可能需要查看CustomCursorAdapter列表正在填充,服务器将