當前位置:首頁 » 安卓系統 » androidlistview問題

androidlistview問題

發布時間: 2023-05-30 18:19:30

Ⅰ Android ListView問題

如果是這個錯液升誤的話Custom view IndexableListView is not using the 2- or 3-argument View constructors:

改正方法燃埋喊皮野:寫三個構造函數就OK了
public IndexableListView(Context context) {

super( context);

}

public IndexableListView(Context context, AttributeSet attrs) {

super( context, attrs );

}

public IndexableListView(Context context, AttributeSet attrs, int defStyle) {

super( context, attrs, defStyle );

}

Ⅱ android listview viewholder 錯亂怎麼解決代碼

在沒有用viewHolder的情況下,listView表現效率低下。如果載入的數量過多則會一點點的消耗內存,直到拋出oom。開始非同步載入圖片會出現圖片錯位的問題,後來查閱資料將holder里邊的圖片地址和圖片一一對應起來,在非同步載入的回調函數中將其替換回來。

holder.thumb_image.setTag(hotel.getHotelTitlePic());
//避免圖標錯位,在非同步載入成功後替換回來

ImageView imageView = (ImageView) listView.findViewWithTag(imageUrl);

if(imageView != null){

imageView.setImageDrawable(imageDrawable);
imageView.setTag("");

}
以上關鍵代碼解決圖片錯位問題。

下面是getView()方法

public View getView(int position, View rowView, ViewGroup parent){
final
MHotelInfo hotel = this.getItem(position);
if (rowView == null) {
holder =
new ViewHolder();
LayoutInflater inflater = ((Activity)
this.getContext())
.getLayoutInflater();
rowView =
inflater.inflate(R.layout.hotel_item_view, null);

holder.typeName =
(TextView) rowView.findViewById(R.id.hotelType);

holder.thumb_image=(ImageView)rowView.findViewById(R.id.img);// 縮略圖

holder.distance = (TextView) rowView.findViewById(R.id.distance);

rowView.setTag(holder);
}else{
holder = (ViewHolder)
rowView.getTag();
}

// 設置ListView的相關值

holder.thumb_image.setTag(hotel.getHotelTitlePic());
//避免圖標錯位,在非同步載入成功後替換回來

holder.typeName.setText(hotel.getTypeName());

if(null ==
hotel.getHotelTitlePic() || hotel.getHotelTitlePic().equals("")){
//如果沒有圖標就顯示默認圖標

holder.thumb_image.setImageResource(R.drawable.downloadfalse);

}else{
//非同步載入圖片

imageLoader.loadDrawable(hotel.getHotelTitlePic(), new ImageCallback() {

public void imageLoaded(Drawable imageDrawable, String imageUrl) {

ImageView imageView = (ImageView) listView.findViewWithTag(imageUrl);

if(imageView != null){

imageView.setImageDrawable(imageDrawable);
imageView.setTag("");

}
}
});
}

return
rowView;
}

static class ViewHolder {
TextView
typeName;
ImageView thumb_image;
}

但是ViewHolder為什麼是被設計成static類型的,本人一直沒弄清楚。在網上找了些資料但是一直沒能看到一個能說服我的理由。又說節省內存,保持對象的唯一性,還有說保持圖片不錯亂但是個人感覺都不怎麼靠譜。今天我試了下將static去掉照常運行沒感覺和以前有什麼區別。後來我查了下static類的一些特性,首先ViewHolder是一個內部類若是static類的話則不需要依賴外部類的對象。也就是說只有static的內部類的成員變數才可以被聲明成static類型,若內部類不是static類型的則不可以聲明靜態成員變數。不知道是不是static內部類的這個特性吸引了設計者?如果有誰清楚這個問題還請不吝賜教。

Ⅲ android的ListView操作問題

寫一個適配器,public class MyAdapter extends BaseAdapter{

/伍哪/重寫擾源抽象方法
//有一個getView(int arg0, View arg1, ViewGroup arg2)這個方法必須重寫
其中arg0就是這個item在listView中的位置,你寫一個內部類來實現緩橘態介面OnClickListenner,
然後比如每一個item有一個Button b,b.setOnclickListenner(new MyListenner()),你有了item的position,就可以操作了
}

Ⅳ android 中listView顯示的問題

這個不知道

Ⅳ Android ListView比較怪異的現象,急求大神回答

你用viewpager可以解決。

  1. 你用一個listview去set不同的Adapter會有問題的。

  2. 你set不漏和吵同的Adapter,要先把原來的item clear掉,然後又重新繪制界面,性能上來看是不太好的,如果有個用戶閑得蛋疼沒什麼鳥事做,不斷的點模塊一,模塊二之間來回切換,你的應用就不斷的 clear,clear,clear......不斷的繪制界面,繪制界面,繪制界面。。。。。。如果你的listview裡面有載入到圖返侍片的,性能就更加差了,而且,很有可能會報內存溢出。

  3. 你用viewpager每個view 裝載一個listview,點模塊一,模塊二也是viewpager的切換,就不用你在同一個listview裡面去set不同的Adapter。

  4. 你現在的這種方法理論是可以實現的,但實際上很容易出現問題。

  5. 你用viewpager重新搞過,布局也要重新調整,如果不棚散熟悉viewpager的就先網上搜索一下相關viewpager的資料。

Ⅵ android listview問題,求解。listview顯示,行與行有堆疊

那是ListView的入門教程吧,主要用來熟悉控制項用法的,寫的簡單省事但不規范,真正在項目中使用時要比這復雜,首先不推薦數組保存大量View,因為開銷太大。另外為了提升流暢性,避免大量的inflate和findViewById操作,很多人都愛加個ViewHolder類……


你可以把ListViewAdapter類改成下面這樣(Context傳Activity實例,像這里就是傳MainActivity.this),不過我這么寫其實也有偷懶,還能寫的更完善,或者用RecyclerView代替。


java">	{

LayoutInflaterinflater;
String[]itemTitles;
String[]itemTexts;
int[]itemImageRes;

publicListViewAdapter(Contextcontext,String[]itemTitles,
String[]itemTexts,int[]itemImageRes){
inflater=LayoutInflater.from(context);

this.itemTitles=itemTitles;
this.itemTexts=itemTexts;
this.itemImageRes=itemImageRes;
}

publicintgetCount(){
returnitemTitles!=null?itemTitles.length:0;
}

@Override
publicObjectgetItem(intposition){
//TODOAuto-generatedmethodstub
returnnull;
}

publiclonggetItemId(intposition){
returnposition;
}

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

ViewHolderviewHolder;

if(convertView==null){
convertView=inflater.inflate(R.layout.item,parent,false);
viewHolder=newViewHolder();
viewHolder.title=(TextView)convertView
.findViewById(R.id.itemTitle);
viewHolder.text=(TextView)convertView
.findViewById(R.id.itemText);
viewHolder.image=(ImageView)convertView
.findViewById(R.id.itemImage);
convertView.setTag(viewHolder);
}else{
viewHolder=(ViewHolder)convertView.getTag();
}

viewHolder.title.setText(itemTitles[position]);
viewHolder.text.setText(itemTexts[position]);
viewHolder.image.setImageResource(itemImageRes[position]);

returnconvertView;
}

classViewHolder{

publicTextViewtitle;
publicTextViewtext;
publicImageViewimage;

}
}

Ⅶ Android中使用listview出現數據紊亂

ListView的Item child view個數是最多能顯示的item數+2。
也就是說,假設你當前看到ListView的item數最多是9, 那這個ListView其實最多隻有11個child view, 但ListView可能有幾十幾扒臘百個Item, 怎麼辦呢簡伍?
當你向下滑動的時候, 把第12個item滑出來的時候,事實上第1,2個item已經完全看不到了,所以第12個Item是重用第1個Item的view, 第13個item是重用的第2個Item的view,也就是ListAdapter.getView()中作為參數傳入的convertView。
這樣明白了吧, 針對第1個Item view,如果你給裡面的控制項設置攔此或了一些屬性,那麼當你滑動listview的時候,第12個item上也會是一樣的item view。
So, 兩種辦法:
1) 在ListAdapter.getView()這個方法中, 每次都是重新創建一個view return。
2)在ListAdapter.getView()這個方法中,還是會重用convertView,但是每次都要重新去初始化convertView的屬性。

Ⅷ Android listview問題

listview 的item是復差鍵用的,item被翻出時會被回收用作下面的翻上來虛指巧的項
你要在adapter裡面初始化每個控逗薯件

Ⅸ android listView問題

在ListView的BaseAdapter裡面加一個 int expandIndex=-1;屬性,表示需要顯示圖片的位置,並為其增加set和get函數;

在getView裡面做判斷,如果當前position等於expandIndex,則顯示imageView,不等則隱藏;

@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
{
……
if(positoin==expandIndex)
{
imageView.setVisibility(View.VISIBLE);
}
else
{
imageView.setVisibility(View.INVISIBLE);
}
漏姿……
}


然後設置listview點擊事件,每次點擊,把被點擊的位置設為expandIndex,並刷新ListVIew如下

mListView.setOnItemClickListener(newOnItemClickListener()
返嫌絕{

@Override
publicvoidonItemClick(AdapterView<?>parent,Viewview,
intposition,longid)
者陪{
mAdapter.setExpandIndex(position);
mAdapter.notifyDataSetChanged();
}
});
熱點內容
電腦主機配置需要哪些硬體 發布:2025-02-10 08:22:52 瀏覽:706
平板太卡換存儲卡有用嗎 發布:2025-02-10 08:14:16 瀏覽:828
台北伺服器搭建 發布:2025-02-10 08:13:33 瀏覽:273
webconfig資料庫的連接配置 發布:2025-02-10 08:13:24 瀏覽:966
dell伺服器背板什麼意思 發布:2025-02-10 08:11:08 瀏覽:100
桑塔納全秀和半袖哪個配置高 發布:2025-02-10 07:55:42 瀏覽:350
手紋演算法 發布:2025-02-10 07:52:27 瀏覽:39
愛奇藝怎麼看賬號密碼 發布:2025-02-10 07:51:43 瀏覽:352
破解訪問許可權 發布:2025-02-10 07:17:24 瀏覽:664
慶余年密碼多少 發布:2025-02-10 07:16:38 瀏覽:202