如何在List视图中获取视图的id资源ID

时间:2015-03-17 07:59:34

标签: android listview

我有Listview显示动物,鸟类,爬行动物的不同图像。列表视图工作正常。现在我希望当用户点击它应该出现在ImageView中的任何图片时。ImageView就在listview下方。因此,当用户点击listview中的任何图片时,它应显示在Imageview中。

还有一个按钮。现在我想实现当用户选择任何图像并按下确定按钮时,特定图像应显示在其他活动的图像视图上。我知道我可以通过intent.putextra()发送ID,但问题首先是如何获取特定图片的ID。

源代码

public class MainActivity2 extends ActionBarActivity {

private TypedArray ListIcons;
private HorizontalListView listView;
private ArrayList<AnimalsListItems> SuitItems;
private  AnimalsListAdapter adapter1 = null;

/** An array of strings to populate dropdown list */
String[] actions = new String[] {
        "Bookmark",
        "Subscribe",
        "Share"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_activity2);
    listView = (HorizontalListView) findViewById(R.id.suits_list);
    AnimalsItems = new ArrayList<AnimalsListItems>();
    /** Create an array adapter to populate dropdownlist */
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_dropdown_item, actions);


    /** Enabling dropdown list navigation for the action bar */
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    getSupportActionBar().setDisplayShowTitleEnabled(false)
    ;
    getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("    "+"            "+"     ");

    /** Defining Navigation listener */
    android.support.v7.app.ActionBar.OnNavigationListener navigationListener = new android.support.v7.app.ActionBar.OnNavigationListener() {

        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            Toast.makeText(getBaseContext(), "You selected : " + actions[itemPosition], Toast.LENGTH_SHORT).show();



            ListIcons = getResources()
                    .obtainTypedArray(R.array.ic_launcher);// load icons from
            // strings.xml
            for (int i = 0; i<=ListIcons.length(); i++) {

                AnimalsItems.add(new AnimalsListItems(ListIcons.getResourceId(i,-1)));
            }
            adapter1 = new SuitsListAdapter(getApplicationContext(),SuitItems);
            Log.v(adapter1.getCount()+"");
            listView.setAdapter(adapter1);

            return false;
        }
    };

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    //With the position parameter, you can fetch the item at the clicked position like below. Cast it to whatever type your ListView is.
     Object yourItem = (Object) listView.getItemAtPosition(position);
         //Now you can assign the image to an imageview
                      }
           });

            /** Setting dropdown items and item navigation listener for the actionbar */
            getSupportActionBar().setListNavigationCallbacks(adapter, navigationListener);

    this.overridePendingTransition(R.anim.anim_slide_in_left,
            R.anim.anim_slide_out_left);
}

}

4 个答案:

答案 0 :(得分:0)

对于ListView,您可以设置onItemClickListener,如下所示

ListView listView1 = (ListView) findViewById(R.id.listView1);
listView1.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        //With the position parameter, you can fetch the item at the clicked position like below. 
        AnimalsListItems yourItem = (AnimalsListItems) listView1.getItemAtPosition(position);
        //Now you can assign the image to an imageview 
    }
}

答案 1 :(得分:0)

如果您正在谈论可绘制ID,图像文件路径或任何识别图像的方式,请不要确定&#34; id&#34;的含义。这在很大程度上取决于您如何填充列表。你根本没有提供任何代码。

但是因为你有一个ListView,我想你有一个适配器,并且你用某些数据支持该适配器,例如数组,数据库等。当你点击一个项目时,你得到一个onItemClick回调与您单击的项目的索引。您应该能够使用此索引查找从数据源中单击的图像。

然后,当谈到将其传递给另一个活动时,再次,它取决于您如何表示您的图像,但您应该能够传递您在意图中表示图像所需的任何数据第二项活动的补充。

答案 2 :(得分:0)

您可以使用ListView的setOnItemClickListener方法来获取单击的女巫项目。因为一个项目的一个图像,您可以获取目标图像。

答案 3 :(得分:0)

1.Step

相反,获取资源ID可以创建一个包含资源ID的整数数组,如

int resourceID [] = [R.drawable.image1,R.drawable.image2,...]

将此数组分配给ListView图像项

2.Step

现在可以使用项目点击方法

上的列表轻松获取所选列表项或图像的位置

listView.setOnItemClickListener(new OnItemClickListener(){})

3.Step 只需传递您的ResourceID数组&amp;将位置挖掘到下一个/目标活动&amp;使用它,而不是传递resourceID

否则,将您的ResourceID设为静态,仅将点击位置传递给下一个Activity&amp;使用上一个Activity

中的静态ResourceID

即 - &gt; yourImageView.setImageResource(FirstActivity.ResourceID [position])