2016-11-29 12 views
0

は、ここに私のコード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; 
} 

私はこのコードを実行すると、リストビューは、データが表示されないですカーソル。どのように私はそれに応じてカーソル内のデータを表示し、クリックのためのボタンを設定することができますか?私はボタンのクリックで意図を開始する必要があります。このコードは、リストビュー上のカーソルからのデータなしで、名字、姓、住所を表示します。

+0

まあ、次のようなclickeventを書くことができ、あなたも内部でその 'Cursor'を使用していない、あなたの' ListViewAdapter'、それはデータが表示されない理由です。 ['CursorAdapter'](https://developer.android.com/reference/android/widget/CursorAdapter.html)を見てください。データ表現として' Cursor'を扱うように特別に設計されています。 – Egor

+0

'SimpleCursorAdapter'を使用するだけです – pskink

+0

最初のListviewチュートリアルを読み、コーディングを開始してください。 http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html –

答えて

0

データを表示するには、ArrayList employeeDescListを準備する必要があります。その後、コンストラクタ
getViewメソッドのコード次の値の使用を表示するには「のArrayList(文字列)DESC」

ために行ったように(グローバル変数として保存 -
そしてこのemployeeDescList
に、すべてのカーソルのデータを埋めるには、次にLstViewAdapter()このemployeeDescListを渡します)メソッド
viewHolder.fname.setText(employeeDescList.get(position).getName())

あなたは

viewHolder.b1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       } 
      }); 
関連する問題