2012-04-27 47 views
0

我有一個自定義適配器的列表視圖,該適配器包含兩個TextViews和一個ImageButton。該列表包含我的班級Firm的對象。當用戶按ImageButton我想從Firm對象中獲取一些信息,通過使用get()-methodListview中的自定義適配器,獲取對象變量

我CustomAdapter

import java.util.Vector; 
import android.app.Activity; 
import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class CustomAdapter extends ArrayAdapter<Firm> 
{ 
Context context; 
int layoutResourceId; 
static String datesort; 
ImageButton call; 
Firm mrb; 

Firm currentMRB; 
Vector<Firm> data; 
/** Called when the activity is first created. */ 
// TODO Auto-generated constructor stub 
public CustomAdapter(Context context, int layoutResourceId, Vector<Firm> data) 
{ 
    super(context,layoutResourceId,data); 
    this.layoutResourceId = layoutResourceId; 
    this.context=context; 
    this.data = data; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    View row = convertView; 
    MyStringReaderHolder holder; 

    if(row==null) 
    { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent,false); 

     holder= new MyStringReaderHolder(); 

     holder.gtumcaTvFirstName =(TextView)row.findViewById(R.id.gtumcaTvFirstName); 
     holder.gtumcaTvLastName =(TextView)row.findViewById(R.id.gtumcaTvLastName); 
     call = (ImageButton)row.findViewById(R.id.imageButton1); 

     row.setTag(holder); 
    } 
    else 
    { 
     holder=(MyStringReaderHolder) row.getTag(); 
    } 

    mrb =data.elementAt(position); 
    System.out.println("Position="+position); 

    holder.gtumcaTvFirstName.setText(mrb.getCompanyName()); 
    int price = (int)mrb.getPrice(); 
    String priceString = Integer.toString(price); 
    holder.gtumcaTvLastName.setText(priceString); 


    call.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 


      Toast.makeText(context, mrb.getNumber(), Toast.LENGTH_LONG).show(); 

     } 
    }); 

    return row; 

} 

看那getView()功能有些Codesnippets,這包含了OnClickListener()的方法,我希望當用戶按下在該項目中的一個運行ListView,功能應該提高Toast與對象的get()方法

但它不起作用。有人知道我可以如何完成這項任務嗎?提前致謝。

UPDATE

我發現什麼是錯的,我忘了該按鈕是一個ImageButton而不是常規Button。但是,我怎樣才能得到物體編號?我的Toast只是根據所有對象從getNumber()方法生成隨機數,更多指定我想要在列表中的例如位置3中的對象的數量。

+0

你會得到任何錯誤? – 2012-04-27 17:27:35

+0

看看我的編輯:) – 2012-04-27 17:34:13

+0

我沒有讓你? – 2012-04-27 17:37:18

回答

0

我要解決我的問題這樣做:

static class MyStringReaderHolder 
{ 
    TextView gtumcaTvFirstName,gtumcaTvLastName,gtumcaTvBirthDate; 
    ImageView gtumcaIvIcon; 
    ImageButton call; 
} 

並創建靜態類

 holder= new MyStringReaderHolder(); 
     holder.call = (ImageButton)row.findViewById(R.id.imageButton1); 
     holder.call.setFocusable(false); 

最後我添加了一個OnClickListenerImageButton

holder.call.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 


     Toast.makeText(context, "" + data.elementAt(position).getCompanyName(), Toast.LENGTH_SHORT).show(); 

     } 
    }); 

謝謝你們的新實例! :)

1
call = (ImageButton)row.findViewById(R.id.imageButton1); 
call.setFocusable(false); <----- add this line 
row.setTag(holder); 

獲得數使用位置變量

Toast.makeText(context, ""+position, Toast.LENGTH_LONG).show(); 
0

如果你想這是點擊在ListView使用監聽器的項目:

listView.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // The position is passed here, do as you please 
    } 
} 
+0

這隻會在CustomAdapter類之外工作。我想從ListView的佈局中使用ImageButton .. – 2012-04-27 17:53:38

相關問題