Android - 带有2个textView的ListView得到哪一个被点击

Android - 带有2个textView的ListView得到哪一个被点击

问题描述:

我有一个列表视图,其中有2个textview,里面是右边,一个是左边,我想设置一个onClickListerner,并获取被点击的文本以及被点击的列表视图的行。Android - 带有2个textView的ListView得到哪一个被点击

我已经能够设置获取被点击的行,但现在我需要帮助找出行中被点击的文本视图。

下面是在列表视图中的单元格我的设立:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="text1" 
     android:id="@+id/1" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 

     android:textColor="#ffffffff" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="text2" 
     android:id="@+id/2" 
     android:minHeight="60dp" 
     android:textSize="18dp" 
     android:gravity="center" 
/> 

</RelativeLayout> 

这是我MainActivity.java与设置列表视图什么到目前为止,我都试过了。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    populateCarList(); 
    populateListView(); 
    registerClickCallback(); 

    private void populateCarList() { 
    userDiningHall.add(new DiningHall("hall1", open1)); 
    userDiningHall.add(new DiningHall("hall2", open2)); 
    userDiningHall.add(new DiningHall("hall3", open3)); 
    userDiningHall.add(new DiningHall("hall4", open4)); 
} 

private void populateListView() { 
    ArrayAdapter<DiningHall> adapter = new MyListAdapter(); 
    ListView list = (ListView)findViewById(R.id.homeListView); 
    list.setAdapter(adapter); 
} 

//THIS GETS WHAT ROW WAS CLICKED 

private void registerClickCallback() { 
    ListView list = (ListView)findViewById(R.id.homeListView); 
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent,View ViewClicked, int position, long id) { 
      DiningHall clickedDiningHall = userDiningHall.get(position); 
      String message = "You clicked position " + position + " which is dining hall " + 
        clickedDiningHall.getDiningHallName(); 
      Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show(); 

     } 
    }); 


} 

private class MyListAdapter extends ArrayAdapter<DiningHall> { 
    public MyListAdapter() { 
     super(MainActivity.this, R.layout.home_item_view, userDiningHall); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View itemView = convertView; 
     if (itemView == null) { 
      itemView = getLayoutInflater().inflate(R.layout.home_item_view, parent, false); 
     } 
     //Find the dining hall 
     DiningHall currentDiningHall = userDiningHall.get(position); 

     //Fill the view 
     TextView diningHallText = (TextView)itemView.findViewById(R.id.itemDiningHallTextView); 
     diningHallText.setText(currentDiningHall.getDiningHallName()); 

     TextView openText = (TextView)itemView.findViewById(R.id.itemOpenTextView); 
     openText.setText(currentDiningHall.getDiningHallOpen()); 


     return itemView; 
    } 
} 

我怎样才能得到什么行被点击和什么textview被点击?

感谢您的帮助提前。 :)

+0

设置不同onClickListener() – 2014-12-08 03:54:15

您可以为TextView s设置相同的View.OnClickListener。然后通过致电v.getId()查询onClick(View v)中点击的View的ID。

你可以为这两个TextViews并在列表视图设置OnItemclickLister设置简单setOnclickListner

在getView每个TextView的