0
我有簡單的項目與sqlite(發送和retrive信息3列)。它運作良好。其實我試圖把這些信息給ListView的3列適配器 - >它看起來像這樣: Android的Sqlite和多列問題
但是當我運行我的應用程序,我的適配器重複同樣的三倍,後下一欄這一點,一步進行一樣。
什麼即時試圖做的是填補列NR 1 textView2信息,textView3從列NR 2 ...
這對於建立ArrayList和呼籲ListView和適配器代碼:
private void populateListView() {
Cursor data = mDatabaseHelper.getData();
ArrayList<String> listData = new ArrayList<>();
while (data.moveToNext()) {
listData.add(data.getString(1));
listData.add(data.getString(2));
listData.add(data.getString(3));
}
ListDataAdapter adapter = new ListDataAdapter(this, R.layout.adapter_view_layout, listData);
mListView.setAdapter(adapter);
和適配器:
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
class ListDataAdapter extends ArrayAdapter<String> {
private static final String TAG = "ListDataAdapter";
private Context mContext;
int mResource;
public ListDataAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull ArrayList<String> objects) {
super(context, resource, objects);
mContext = context;
mResource = resource;
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
String name = getItem(position).toString();
String sex = getItem(position).toString();
String date = getItem(position).toString();
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(mResource,parent, false);
TextView tvName = (TextView) convertView.findViewById(R.id.textView1);
TextView tvSex = (TextView) convertView.findViewById(R.id.textView2);
TextView tvDate = (TextView) convertView.findViewById(R.id.textView3);
tvName.setText(name);
tvDate.setText(date);
tvSex.setText(sex);
return convertView;
}
}
如何解決這個問題呢?
愛德華什麼建議「Rowmodel」類應該怎麼樣子? – bakusek
它可以是一個簡單的3個字段的POJO。 –
是的,它解決了我的問題,非常感謝你 – bakusek