2013-03-07 58 views
0

我有一個列表視圖與圖像和鏈接functionaliy現在我需要的是我想在列表視圖中的每個項目中創建一個按鈕,如果我點擊按鈕它必須去另一個活動,在該活動頁面它必須打開一個XML文件分別點擊按鈕,我會硬編碼xml文件的細節在一個列表視圖java文件,如何做到這一點。如何在列表視圖中創建按鈕,如果我點擊它必須打開一個活動?

public class SouthIndianvegrecipes extends Activity { 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main1); 

     ArrayList<Recipedetails1> image_details = GetSearchResults(); 

     final ListView lv1 = (ListView) findViewById(R.id.listV1_main); 
     lv1.setAdapter(new ItemListBaseAdapter1(this, image_details)); 

     lv1.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
       Object o = lv1.getItemAtPosition(position); 
       Recipedetails1 obj_itemDetails = (Recipedetails1)o; 
       Toast.makeText(SouthIndianvegrecipes.this, "You have chosen : " + " " + obj_itemDetails.getName1(), Toast.LENGTH_LONG).show(); 


      } 
     }); 
    } 

    private ArrayList<Recipedetails1> GetSearchResults(){ 
     ArrayList<Recipedetails1> results = new ArrayList<Recipedetails1>(); 

     Recipedetails1 item_details = new Recipedetails1(); 
     item_details.setName1("Vegterian"); 
     item_details.setItemDescription1("Recipes made by raw materials"); 
     item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU"); 
     item_details.setImageNumber1(1); 
     results.add(item_details); 

     item_details = new Recipedetails1(); 
     item_details.setName1("Non-Vegterian"); 
     item_details.setItemDescription1("Flesh of sweet animals"); 
     item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU"); 
     item_details.setImageNumber1(2); 
     results.add(item_details); 

     item_details = new Recipedetails1(); 
     item_details.setName1("Pickels"); 
     item_details.setItemDescription1("Touchable dish by Homemade"); 
     item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU"); 
     item_details.setImageNumber1(3); 
     results.add(item_details); 

     item_details = new Recipedetails1(); 
     item_details.setName1("Soups"); 
     item_details.setItemDescription1("Startup for our food"); 
     item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU"); 
     item_details.setImageNumber1(4); 
     results.add(item_details); 




     return results; 
    } 

}

+0

我不明白問題是什麼...... – codeMagic 2013-03-07 03:39:07

+0

在我的listview中,我將爲所有項目創建按鈕,如果我在列表視圖中單擊按鈕,它必須打開一個活動,並分別點擊它必須顯示他們的內容 – kkarthickk 2013-03-07 03:43:30

+0

@ user2118898你需要有一個自定義適配器來填充列表視圖在谷歌嘗試搜索有很多教程 – Pragnani 2013-03-07 05:00:06

回答

0

你需要從這裏

https://stackoverflow.com/a/14372750/1136023

使用添加android:descendantFocusability="blocksDescendants"

我剛剛找到解決這個通過您的包含intent.putExtra("TAG", Data);

+0

,謝謝,你能告訴我如何使用列表視圖中的按鈕functionailty,如果我點擊在item1的listview中的第一個按鈕,它必須去活動,但它的內容取決於列表視圖中的按鈕,如果我點擊列表視圖中的第二個按鈕它必須去相同的活動,但其內容應該是不同的,但只有相同的佈局 – kkarthickk 2013-03-07 03:51:14

1

你只需要Ť setOnClickListener用於像這樣的ItemListBaseAdapter1的getView()方法中的按鈕。

class ItemListBaseAdapter1 extends BaseAdapter 
    { 

    private Activity mActivity; 
    public ItemListBaseAdapter1(Activity activity, ...) 
    { 
     mActivity = activity; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     // TODO: get view here 
     final Recipedetails1 item = (Recipedetails1) getItem(position); 
     theButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) 
      { 
       Intent intent = new Intent(mActivity, [your activity class]); 
       intent.putExtra("The Link Key", item.getUrlWiki()); 
       mActivity.startActivity(intent); 
      } 
     }); 
     return view; 
    } 

} 

和目標的活動,你該得到的鏈接:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    String link = getIntent.getString("The Link Key", null); 
} 
0

正如你所說,你在列表的列表項的按鈕。因爲你知道按鈕點擊收聽ü在onclicklistener

新OnClickListener()方法得到視圖
{
@覆蓋
公共無效的onClick(查看視圖)
{}
}

這裏view有一個getparent()方法,它返回一個你設置按鈕的視圖。您可以通過打印日誌來檢查它。 如果你有父母的按鈕,那麼你也可以獲得其中1個子視圖是按鈕的父母的所有子視圖。 從所有的孩子的意見你可以得到值,發送他們在下一個活動。如果按鈕的父項在列表項中有另一個父項,那麼你也可以通過調用getparent()方法來獲得父視圖的父項。

請記住,視圖有父子關係,所以如果你想要所有的孩子,那麼你必須得到父母。

相關問題