列表視圖的滾動隨機排序的變化我有一個ListView和一個BaseAdapter.I我下載的listview.It從互聯網服務和產品陳列上的列表視圖可以正確地顯示。列表視圖排在安卓
但是,當我的ListView滾動顯示的行中的隨機位置有時意味着在第一位置第三行顯示,上最後位置的中間位置行顯示等。
這是我的適配器類
public class ProductListAdapter extends BaseAdapter implements OnClickListener{
LayoutInflater inflater;
ArrayList<Product> arrProducts;
Context c;
public ProductListAdapter(Context c, ArrayList<Product> arrProducts) {
super();
inflater = LayoutInflater.from(c);
this.arrProducts = arrProducts;
this.c = c;
}
@Override
public int getCount() {
return arrProducts.size();
}
@Override
public Object getItem(int position) {
return arrProducts.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View v, ViewGroup parent) {
Product product = null;
if(v == null) {
v = inflater.inflate(R.layout.product_listview_row, null);
product = (Product) getItem(position);
v.setTag(product);
}else {
product = (Product)v.getTag();
}
v.setOnClickListener(this);
TextView tvProductname = (TextView)v.findViewById(R.id.tvProductname);
tvProductname.setText(product.getTitle());
String strReviewCount = product.getReviews();
TextView tvReviewsCounts = (TextView)v.findViewById(R.id.tvReviews);
if(strReviewCount != null) tvReviewsCounts.setText(strReviewCount +" Reviews");
Button btnPrice = (Button)v.findViewById(R.id.btnPrice);
btnPrice.setText(product.getSellingPrice());
return v;
}
@Override
public void onClick(View v) {
Product product = (Product) v.getTag();
Intent i = new Intent(c, ProductDetails.class);
i.putExtra(Product.PROD_ID, product.getId());
startActivity(i);
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
@Override
public int getViewTypeCount() {
return super.getViewTypeCount();
}
}
這是XML佈局
<ListView android:id="@+id/lstProducts" style="@style/fill_parent"
android:dividerHeight="1dp" android:divider="#dbd3c5"
android:scrollbars="vertical" android:layout_below="@id/layLine"></ListView>
此外,當我改變BaseAdapter的getView()
方法這樣它工作正常
@Override
public View getView(int position, View v, ViewGroup parent) {
Product product = null;
v = inflater.inflate(R.layout.product_listview_row, null);
product = (Product) getItem(position);
v.setTag(product);
v.setOnClickListener(this);
TextView tvProductname = (TextView)v.findViewById(R.id.tvProductname);
tvProductname.setText(product.getTitle());
String strReviewCount = product.getReviews();
TextView tvReviewsCounts = (TextView)v.findViewById(R.id.tvReviews);
if(strReviewCount != null) tvReviewsCounts.setText(strReviewCount +" Reviews");
Button btnPrice = (Button)v.findViewById(R.id.btnPrice);
btnPrice.setText(product.getSellingPrice());
return v;
}
但在這種類型的問題是我展示產品列表視圖上排,我使用here.By這種類型的代碼getView()
方法總是創造新的視圖時的ListView所以不斷滾動,我有沒有考慮像重新下載圖像和again.I使用哪種使用cash memory
圖片供下載,但問題是,當我設置圖像的ImageView很多時候它給我out of memory error
ImageLoader
類。
請幫我從這個問題。
感謝
我知道我的回答是不被使用的確切方式,但暫時目的我使用視圖類型來管理它。希望你的解決方案能夠正常工作並被檢查 –
謝謝。我希望你不要生氣,這不是我的意圖。這裏的問題是,人們接受普通和工作的*技巧,然後在事情出錯或者他們想要使用真正的視圖類型實現時變得非常困惑......我只是想讓它清楚,而不是開始傳言; - ) – Knickedi
不,不,它對我來說也是很好的解決方案。我個人認爲你的答案肯定會奏效,我也會嘗試一下。而感覺不好從來就不是情況,我也在這裏學習。這是從你那裏得到的新東西。謝謝。 –