如何使用UsersAdapter将数据设置为列表视图?
我发展的Couchbase精简版database.My问题的应用程序是,当我通过ArrayAdapter的数据看像下面形象。ArrayAdapter代码查询从couchbase精简版数据库中的数据和设置数据到列表视图中如何使用UsersAdapter将数据设置为列表视图?
CouchDb couchDb = new CouchDb(getApplicationContext());
ArrayList<ContactData> data = couchDb.getData();
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.list_simple,R.id.textname,data);
list.setAdapter(adapter);
克服这曾经创建的自定义类UsersAdapter
public class UsersAdapter extends ArrayAdapter<ContactData>{
public UsersAdapter(MainActivity mainActivity, ArrayList<ContactData> data) {
super(mainActivity,R.layout.list_simple,data);
}
public class ViewHolder {
TextView name;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ContactData contactData = getItem(position);
ViewHolder viewHolder;
if(convertView == null)
{
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(R.layout.list_simple, parent, false);
viewHolder.name = (TextView) convertView.findViewById(R.id.textname);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.name.setText(contactData.getNames());
return convertView;
}
}
在上述适配器零指示字例外发生在这条线viewHolder.name.setText(contactData.getNames());
这是联络资料java类
public class ContactData {
String names;
public ContactData(String names) {
this.names = names;
}
public ContactData()
{
}
public String getNames() {
return names;
}
public void setNames(String names) {
this.names = names;
}
}
请帮助我如何解决这个问题,也说不清为什么该值在UsersAdapter返回null的原因。
发生的异常是
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.seyali.couchbasedatabase2, PID: 5641 java.lang.NullPointerException: Attempt to read from field 'android.widget.TextView com.seyali.couchbasedatabase2.MainActivity$UsersAdapter$ViewHolder.name' on a null object reference
at com.seyali.couchbasedatabase2.MainActivity$UsersAdapter.getView(MainActivity.java:107)
at android.widget.AbsListView.obtainView(AbsListView.java:2363)
您已经创建了UsersAdapter但你是不是在任何地方使用它。用户它是这样的:
CouchDb couchDb = new CouchDb(getApplicationContext());
ArrayList<ContactData> data = couchDb.getData();
UsersAdapter adapter = new UsersAdapter(this, data);
list.setAdapter(adapter);
NullPointerException是因为项目为空。试着这样做:
private ArrayList<ContactData> data;
public UsersAdapter(MainActivity mainActivity, ArrayList<ContactData> data) {
super(mainActivity,R.layout.list_simple,data);
this.data = data;
}
然后在getView方法,如:
ContactData contactData = data.get(position);
希望它可以帮助!
没有问题不解决,仍然异常occurrs –
发表您的例外 –
使用此:
private ArrayList<ContactData> data;
private Context context;
public UsersAdapter(Context contect, ArrayList<ContactData> data) {
this.context=context;
this.data = data;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ContactData contactData = data.get(position);
ViewHolder viewHolder;
if(convertView == null)
{
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(R.layout.list_simple, parent, false);
viewHolder.name = (TextView) convertView.findViewById(R.id.textname);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.name.setText(contactData.getNames());
return convertView;
}
仍然异常occurrs –
这里贴上您的例外。 –
你重写了getCount()方法吗? –
是否'list_simple'布局包含TextView的id为'textname'? – Piyush
是的,它包含了ID –
,这是什么'的ArrayList数据大小的TextView = couchDb.getData();?'是否填充? –
Piyush