我有ListView的行(listview在LinearLayout中),如
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<CheckBox
android:id="@+id/chk"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtChoice"
android:textColor="#FF0000"
android:text="TEST"
android:layout_toRightOf="@id/chk"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
和类似内部类的适配器
private class SimpleAdapter extends BaseAdapter {
private String[] list=null;
public SimpleAdapter(String[] list) {
this.list = list;
}
@Override
public int getCount() {
return list.length;
}
@Override
public Object getItem(int position) {
return list[position];
}
@Override
public long getItemId(int position) {
return list[position].hashCode();
}
// Generate view for coupon's row
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.row, null);
}
return view;
}
}
我设置适配器
SimpleAdapter m=new SimpleAdapter( data );
listView.setAdapter(m);
数据为String[] data=new String[]{"test","test_1"};
但是列表没有显示任何内容。我贬低了,它通过了正常但没有任何表现。可能有什么问题?
答案 0 :(得分:3)
您发布的相同代码,我已经尝试过了。 并且完美地运行..
我在我的activity和xml中使用了相同的适配器类
在我的TestThis.java文件中
我使用了你的Adapter类 我写了,
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.maintwiter);
String[] data=new String[]{"test","test_1"};
SimpleAdapter m=new SimpleAdapter( data );
ListView listView = new ListView(this);
listView.setAdapter(m);
setContentView(listView);
}
但仍然需要在getView()方法中将String数组中的数据设置为文本视图
他把结果作为列表给了我2行。
答案 1 :(得分:2)
我认为你的getView()需要一些工作。你并没有真正对你传入的数据做任何事情。试试这个:
public View getView(int position, View convertView, ViewGroup parent) {
View v;
if (convertView == null)
v = LayoutInflater.from(context).inflate(R.layout.row, parent, false);
else
v = convertView;
TextView text = (TextView) v.findViewById(R.id.txChoice);
text.setText( list[position] );
return v;
}
答案 2 :(得分:1)
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if(view == null){
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.row, null);
}
return view;
}
使用以下命令修改你的getView:
if(convertView == null){
LayoutInflater inflater (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.row, null);
} TextView t = (TextView) convertView.findViewById(your text view); t.setText(...); return convertView;
这里为你没有设置行内容的行充气..使用convertiview来检索你的文本视图,使用作为参数传递给getView方法的位置调用getItem,并设置你的文本。
答案 3 :(得分:1)
你也可以试试这个:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(view == null)
{
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.txtChoice=(TextView)convertView.findViewById(R.id.txtChoice);
}
else
holder=(ViewHolder)convertView.getTag();
holder.textChoice.setText(lis[position]));
return view;
}
static class ViewHolder
{
TextView txtChoice;
}