私の問題は次のとおりです: この例ArrayLists
を使用して、データベースから 2 (名前と番号) を取得し、そのデータをリストのテキストビューに出力するリストビュー用のカスタムアダプターを作成しようとしました。データはリストに表示されますが、個別に表示されます。つまり、名前が番号で表示され、2 つがリストの 1 つのエントリとして一緒に表示されるのではなく、個別にクリックできます。必要なコードを添付します。
私のアダプタークラス:
public class ListViewCustomAdapter extends BaseAdapter {
public Activity context;
public LayoutInflater inflater;
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> nos = new ArrayList<String>();
public ListViewCustomAdapter(Activity context,ArrayList<String> names, ArrayList<String> nos) {
super();
this.context = context;
this.names = names;
this.nos=nos;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return names.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder
{
TextView txtViewName;
TextView txtViewNo;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.editlist, null);
// holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
holder.txtViewName = (TextView) convertView.findViewById(R.id.textView1);
holder.txtViewNo = (TextView) convertView.findViewById(R.id.textView2);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
//holder.imgViewLogo.setImageResource(R.drawable.icon);
holder.txtViewName.setText(names.get(position));
holder.txtViewNo.setText(nos.get(position));
return convertView;
}
}
リストビュー xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="5dip">
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/textView1"
android:layout_marginLeft="2dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/textView2"
android:layout_toRightOf="@+id/textView1"
android:layout_marginLeft="2dip">
</TextView>
</RelativeLayout>
アダプタを使用する主なアクティビティ:
public class EditActivity extends ListActivity implements OnClickListener, OnItemClickListener{
Button b_add;
ListView lv;
SQLUtils sqlUtils = new SQLUtils(this);
ListViewCustomAdapter adapter;
ArrayList<String> names = new ArrayList<String>();
ArrayList<String> nos = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_layout);
b_add = (Button)findViewById(R.id.b_add);
b_add.setOnClickListener(this);
lv = (ListView)findViewById(android.R.id.list);
names=sqlUtils.getActions(1);
nos=sqlUtils.getActions(2);
//lv.setOnItemClickListener(this);
adapter = new ListViewCustomAdapter(this, names, nos);
lv.setAdapter(adapter);
}
[1]