は、ここに私のコードViewHolderエラー
主な活動...
String[] from = new String[]{mydb.ID, mydb.FNAME, mydb.LNAME, mydb.ADDRESS};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
mydb = new DBHelper(this);
Cursor cursor = mydb.fetch();
listView = (ListView) findViewById(R.id.listView);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
id = (TextView) arg1.findViewById(R.id.id);
int id_To_Search = Integer.valueOf(id.getText().toString());
Bundle dataBundle = new Bundle();
dataBundle.putInt("_id", id_To_Search);
Intent intent = new Intent(getApplicationContext(), AddPatient.class);
intent.putExtras(dataBundle);
startActivity(intent);
}
});
LstViewAdapter adapter=new LstViewAdapter(this,R.layout.list,cursor,R.id.id,R.id.fname,R.id.lname,R.id.address,from);
listView.setAdapter(adapter);
}
LstViewAdapter.java
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
public class LstViewAdapter extends ArrayAdapter<String> {
int groupid;
String[] item_list;
ArrayList<String> desc;
Context context;
public LstViewAdapter(Context context, int vg, Cursor cursor, int id, int fname, int lname, int address, String[] item_list){
super(context,vg, id, item_list);
this.context=context;
groupid=vg;
this.item_list=item_list;
}
// Hold views of the ListView to improve its scrolling performance
static class ViewHolder {
public TextView fname,lname,address,id;
public Button b1,b2;
}
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
// Inflate the list_item.xml file if convertView is null
if(rowView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView= inflater.inflate(groupid, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.fname= (TextView) rowView.findViewById(R.id.fname);
viewHolder.lname= (TextView) rowView.findViewById(R.id.lname);
viewHolder.address= (TextView) rowView.findViewById(R.id.address);
viewHolder.id= (TextView) rowView.findViewById(R.id.id);
viewHolder.b1= (Button) rowView.findViewById(R.id.button6);
rowView.setTag(viewHolder);
}
// Set text to each TextView of ListView item
return rowView;
}
私はこのコードを実行すると、リストビューは、データが表示されないですカーソル。どのように私はそれに応じてカーソル内のデータを表示し、クリックのためのボタンを設定することができますか?私はボタンのクリックで意図を開始する必要があります。このコードは、リストビュー上のカーソルからのデータなしで、名字、姓、住所を表示します。
まあ、次のようなclickeventを書くことができ、あなたも内部でその 'Cursor'を使用していない、あなたの' ListViewAdapter'、それはデータが表示されない理由です。 ['CursorAdapter'](https://developer.android.com/reference/android/widget/CursorAdapter.html)を見てください。データ表現として' Cursor'を扱うように特別に設計されています。 – Egor
'SimpleCursorAdapter'を使用するだけです – pskink
最初のListviewチュートリアルを読み、コーディングを開始してください。 http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html –