저는 Android app을 개발 중이며 ListView에 데이터베이스의 일부 데이터를 제목 및 자막으로 표시하려고합니다. SimpleCursorAdapter를 확장하는 어댑터를 수행했지만 작동하지만 2 개의 첫 번째 필드와 BindView 메서드에서 선택하지 않은 부분을 보여줍니다.어댑터가 올바른 문자열을 표시하지 않습니다.
package com.apeirons.apeironsdatabasemanager;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
public class MyListAdapter extends SimpleCursorAdapter {
//private Context context;
LayoutInflater inflater;
@SuppressWarnings("deprecation")
public MyListAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, R.layout.consult, c, from, to);
inflater = LayoutInflater.from(context);
}
public void bindview (View view, Context context, Cursor cursor){
TextView titulo = (TextView)view.findViewById(R.id.Titulo);
titulo.setText(cursor.getString(cursor.getColumnIndex("name")));
TextView subtitulo = (TextView)view.findViewById(R.id.SubTitulo);
subtitulo.setText(cursor.getString(cursor.getColumnIndex("kind_place")));
subtitulo.append(cursor.getString(cursor.getColumnIndex("score")));
}
@Override
public View newView (Context context, Cursor cursor, ViewGroup parent){
View v = inflater.inflate(R.layout.entrys, parent, false);
return v;
}
}
: 그래서 어댑터의 코드입니다 미안 오류를 찾기 위해 노력하지만 난 할수 없어, 아마 정말 멍청한 짓을 키우면하지만 오류가 :-) 직접 찾기 위해 정말 열심히이다 여기 어댑터를 사용하는 곳이 있습니다 :
package com.apeirons.apeironsdatabasemanager;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
public class Consult extends Activity {
private ListView list;
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.consult);
list = (ListView)findViewById(R.id.list);
this.getIntent();
ApeironsSQLiteHelper apeironsdb = new ApeironsSQLiteHelper(this, "DBApeirons.DB", null, 1);
db = apeironsdb.getReadableDatabase();
String[] campos = new String[]{"_id", "name", "kind_place", "score"};
Cursor c = db.query("Apeirons", campos, null, null, null, null, null);
int cuenta = c.getCount();
c.moveToFirst();
Log.d("CONSULTA", Integer.toString(cuenta));
Log.d("CURSOR", c.getString(c.getColumnIndex("score")));
String[] from = new String[]{"name", "kind_place", "score"};
int [] to = new int[] {R.id.Titulo, R.id.SubTitulo};
//@SuppressWarnings("deprecation")
MyListAdapter myadapter = new MyListAdapter (this,
R.layout.entrys, c, from, to);
list.setAdapter(myadapter);
}
}
정말 고맙습니다.
코드에 몇 가지 다른 문제가 있습니다. A) 사용하는 생성자는 사용하지 말아야합니다. 비추천 경고에는 이유가 있습니다. B)'from'' to'매핑을 사용하지 않는다면'SimpleCursorAdaper'를 사용할 필요가 없습니다 (사용하고자한다면'newView' /'bindView'를 오버라이드하지 마십시오) - A 간단한'CursorAdapter' 만 있으면 충분합니다. C) ViewHolder 패턴 사용을 고려해야하므로 뷰를 업데이트 할 때마다 findViewById를 사용할 필요가 없습니다. 'findViewById'는 성능을 떨어 뜨립니다. http://pastebin.com/AUCWF6ut에서 이러한 문제를 수정합니다. – zapl