2011-09-22 51 views
2

我有自定義ListView,我ListView包含一個button,如果我們點擊按鈕,我想去一些data.I其他活動中使用下面的代碼,如何從ListView Adapter調用活動?

holder.mMore.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // TODO Auto-generated method stub 
       if (event.getAction() == event.ACTION_DOWN){ 
        Intent moreIntent=new Intent(getContext(),SelectItemDesp.class); 
        v.getContext().startActivity(moreIntent); 

       } 
       return false; 
      } 
     }); 

它顯示error.pls幫我

+0

請問,你可以附加logcat錯誤?和一個建議:當你創建新的intent時,嘗試使用getContext()的v.getContext()。 – kameny

+0

嗨Kameny感謝您的回覆,意圖moreIntent =新的意圖(getContext(),SelectItemDesp.class)在這裏「getContext」顯示錯誤 – suresh

+0

if(event.getAction()== event.ACTION_DOWN){ 意圖moreIntent = new Intent(yourActivityName 。這,SelectItemDesp.class); startActivity(moreIntent); 試試這個。並讓我知道發生了什麼..謝謝。 – user370305

回答

1

我會假設你已經寫了一個類你的ListView適配器。讓我們快速命名這個類:MyListViewAdapter。在這個類中,你很可能有一個構造函數。它看起來是這樣的:

public MyListViewAdapter (Context context, ArrayList<String> myList) { 
super (context, R.layout.my_layout, R.id.my_text_view, myList); 

現在的環境是你需要開始一個新的活動,因爲,因爲它不是從活動類衍生延伸的ArrayAdapter一個ListView適配器不能啓動的活動是什麼。因此,這是你如何開始,然後一個活動:

context.startActivity(context, GoToClass.class); 

只要確保一個全球性的,但私有變量添加到您的代碼(private Context context),並添加到您的構造this.context = context,如果你創建對象,你必須把MyListViewAdapter m = new MyListViewAdapter(CurrentClass.this, myListFullOfStrings);

0

更換

Intent moreIntent=new Intent(getContext(),SelectItemDesp.class); 
       v.getContext().startActivity(moreIntent); 

隨着

Intent lObjIntent = new Intent(getApplicationContext(), SelectItemDesp.class); 
startActivity(lObjIntent); 
finish(); 
+0

嗨Vinayak,謝謝你在這裏的答覆getApplicationContext()顯示錯誤 – suresh

+0

然後嘗試使用你的CurrentClass.this –

+0

tryed那一個也是,它顯示錯誤 – suresh

0

我也使用自定義列表視圖,並且在該列表視圖中也有一個刪除按鈕,並且我已經完成了類似於下面的操作並且適用於我。

一件事我類擴展ArrayAdapter

public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder;

if(convertView == null) 
    { 
     holder = new ViewHolder(); 

     convertView = inflater.inflate(R.layout.row_layout_mymedicine, null); 


     holder.btnDelete = (Button)convertView.findViewById(R.id.btnDelete); 

     holder.btnDelete.setOnClickListener(this); 

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

    return convertView; 
} 



隨後的onClick()方法,我有做

public void onClick(View v)
{
switch(v.getId())
{
case R.id.btnDelete:
getContext().startActivity(new Intent(getContext(),DeleteActivity.class));
break;
default:
break;

}
}

0

你從一個匿名內部類調用新的活動,像什麼this只會引用這個匿名類。

使用MyClass.this爲維納亞克建議,如果錯誤仍然存​​在,張貼在這裏的logcat的

+0

我嘗試從ListView適配器類調用一個活動。不是來自活動 – suresh

+0

但是, listview的適配器沒有掛在空中,對嗎?它在一項活動中。我正在談論這個活動 –

0

試試這個。它應該工作

Intent intent = new Intent(context, SelectItemDesp.class); 
        context.startActivity(intent);