我正在實施一個android ListView
有時有超過1000個記錄。Android Listview不提供我正確的位置
這是我目前在做什麼:
- 我從數據庫中獲取記錄。
- 我在我的
ListView
佈局中有一個按鈕。 - 點擊按鈕,我只是顯示我的數據庫表的主鍵,它被設置爲自動遞增。
的問題是:
比方說,我有10行,當我點擊按鈕,在第一行返回第二行的值。當我點擊第二個列表按鈕時,它返回第三個值。如果我點擊列表中的最後一個按鈕,它會返回正確的值。
這裏是我的ListView適配器代碼:
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
import info.androidhive.navigationdrawer.R;
import info.androidhive.navigationdrawer.activity.ProductDetailResult;
import info.androidhive.navigationdrawer.other.SharedPreference;
import info.androidhive.navigationdrawer.singloton_classes.ProductResultSingloton;
public class ProductResultListAdaptor extends BaseAdapter {
private Activity activity;
Typeface custom_font;
String mDrawableName;
private LayoutInflater inflater;
private List<ProductResultSingloton> result_items;
int prod_id;
public ProductResultListAdaptor(Activity activity, List<ProductResultSingloton> result_items) {
this.activity = activity;
this.result_items = result_items;
}
@Override
public int getCount() {
return result_items.size();
}
@Override
public Object getItem(int location) {
return result_items.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Viewholder holder;
if (inflater == null) {
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if (convertView == null) {
convertView = inflater.inflate(R.layout.products_list, null);
holder = new Viewholder();
holder.modal = (TextView) convertView.findViewById(R.id.prod_result_modal);
holder.type = (TextView) convertView.findViewById(R.id.prod_result_type);
holder.observation = (TextView) convertView.findViewById(R.id.prod_result_obeservation);
holder.view_detail = (Button) convertView.findViewById(R.id.show_detail);
holder.view_detail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity,Integer.toString(prod_id),Toast.LENGTH_LONG).show();
}
});
convertView.setTag(holder);
}else {
holder = (Viewholder) convertView.getTag();
}
ProductResultSingloton m = result_items.get(position);
prod_id = m.getRow_id(); //Database id is set to singlton class.
holder.modal.setText(m.getCODIGO());
holder.type.setText(m.getTIPO());
holder.observation.setText(m.getOBSERVACIONES());
return convertView;
}
static class Viewholder{
TextView modal;
TextView type;
TextView observation;
Button view_detail;
}
}
任何建議/幫助表示讚賞。我困在我的項目中間。
在此先感謝。
試試'prod_id = position' – Marat
是不是因爲你的索引在db strat從0開始,indexView的索引從1開始,還是反向? –
我不能指定位置prod_id,因爲我的prod_id不是按順序,因爲我是在數據庫中應用過濾器,所以產品ID可以是來自所有2000條記錄中的任何一個 – Bilal