自定义arrayadapter中的getview()
方法没有调用,我搜索了更多但我无法找到解决方案,请给我一些建议。我想我做了almoost所有的可能性方法但我无法修复它
这是我的活动
public ListView listView;
TwiterlistAdapter adapter;
List<ProfileconnectedObject> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.wood_twitlist);
listView=(ListView) findViewById(R.id.listView1);
list=new ArrayList<ProfileconnectedObject>();
adapter=new TwiterlistAdapter(Wood_Twiter_Feed_list.this, R.layout.wood_twititem, list);
listView.setAdapter(adapter);
}
}
这是我的适配器
public class TwiterlistAdapter extends ArrayAdapter<ProfileconnectedObject>{
public Context context;
List<ProfileconnectedObject> items;
ProfileconnectedObject object;
private RadioButton mCurrentlyCheckedRB;
private boolean userSelected = false;
private int mResourceId = 0;
private RadioButton mSelectedRB;
private int mSelectedPosition = -1;
int row;
public TwiterlistAdapter(Context context, int resource,
List<ProfileconnectedObject> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
this.row=resource;
this.context=context;
this.items=objects;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
System.out.println("items.size() "+items.size());
return this.items.size();
}
public Context getContext() {
return context;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = new ViewHolder();
View hView = convertView;
if (hView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(row, null);
holder.pic = (ImageView) hView
.findViewById(R.id.profile_pic);
holder.name = (TextView) hView.findViewById(R.id.name);
holder.radiobt = (RadioButton) hView.findViewById(R.id.radio);
hView.setTag(holder);
}
else {
holder = (ViewHolder) hView.getTag();
}
object=items.get(position);
if (position == getCount() - 1 && userSelected == false) {
holder.radiobt.setChecked(true);
mCurrentlyCheckedRB = holder.radiobt;
} else {
holder.radiobt.setChecked(false);
}
holder.radiobt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if((position != mSelectedPosition && mSelectedRB != null)){
mSelectedRB.setChecked(false);
}
mSelectedPosition = position;
mSelectedRB = (RadioButton)v;
}
});
if(mSelectedPosition != position){
holder.radiobt.setChecked(false);
}else{
holder.radiobt.setChecked(true);
if(mSelectedRB != null && holder.radiobt != mSelectedRB){
mSelectedRB = holder.radiobt;
}
}
holder.name.setText(object.getP_profilename());
return hView;
}
public class ViewHolder {
TextView name;
RadioButton radiobt;
ImageView pic;
}
}
答案 0 :(得分:3)
您的列表对象为空 list = new ArrayList(); 。因此不会调用getView()方法。在该arraylist中添加一些值并尝试。您需要在这些语句之间将值放在arraylist中。
listView=(ListView) findViewById(R.id.listView1);
list=new ArrayList<ProfileconnectedObject>();
/* For Example */
list.add(new ProfileconnectedObject());
adapter=new TwiterlistAdapter(Wood_Twiter_Feed_list.this, R.layout.wood_twititem, list);
listView.setAdapter(adapter);
尝试将一些对象值添加到arraylist中并再次检查。
答案 1 :(得分:0)
如果您没有遗漏任何内容,则列表为空。检查getCount()中列表的大小,我很确定它是0.
答案 2 :(得分:0)
Try Like this :
listView = (ListView) rootView.findViewById(R.id.Listviewname);
-----------------------------------------------------------------------
AssignmentDatabaseConnector dao = new AssignmentDatabaseConnector(getActivity());
List<AssignmentPojo> assignments= dao.getAllAssignmentList();
assignmentCustomAdapter = new AssignmentCustomAdapter(getActivity(),
assignments, this);
listView.setAdapter(assignmentCustomAdapter);
---------------------------------------------------------------------------
##AssignmentDatabaseConnector :
public List<AssignmentPojo> getAllAssignmentList() {
open();
List<AssignmentPojo> assignmentList = new ArrayList<AssignmentPojo>();
// Select All Query
String selectQuery = "SELECT * FROM Assignment";
Cursor cursor = database.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
AssignmentPojo assignment = new AssignmentPojo();
assignment.setAssign_Id(cursor.getString(0));
assignment.setAssign_Course(cursor.getString(1));
// Adding contact to list
assignmentList.add(assignment);
} while (cursor.moveToNext());
}
cursor.close();
database.close();
// return contact list
return assignmentList;
}
---------------------------------------------------------------------------------------
#AssignmentCustomAdapter.java :
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import com.xyz.R;
import com.xyz.pojo.AssignmentPojo;
public class AssignmentCustomAdapter extends BaseAdapter {
private TextView mAssignTitle, mAssignCourse, mAssignAvDate, mAssignAvTime,
mAssignClDate, mAssignClTime;
private final Context context;
List<AssignmentPojo> assignments;
private ViewAllAssignments viewAllAssignments;
AssignmentCustomAdapter(Context context, List<AssignmentPojo> assignments2,
ViewAllAssignments viewAllAssignments) {
this.context = context;
this.assignments = assignments2;
this.viewAllAssignments = viewAllAssignments;
@Override
public int getCount() {
// TODO Auto-generated method stub
return assignments.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View rowView = convertView;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
rowView = inflater.inflate(R.layout.assignments_viewlists, parent,
false);
}
mAssignCourse = (TextView) rowView.findViewById(R.id.Assign_Course);
mAssignCourse.setText(assignments.get(position).getAssign_Course());
mAssignTitle = (TextView) rowView.findViewById(R.id.Assign_Title);
SingleChk = (CheckBox) rowView.findViewById(R.id.SingleChk);
checkedvalue.clear();
rowView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Toast
}
});
return rowView;
}
}