如何获取列表视图中视图的id资源id

How to get the id resource id of a view in a List view

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

还有一个按钮。现在我想实现的是,当用户 select 任何图像并按下 Ok 按钮时,该特定图像也应该显示在其他 activity 的图像视图中。我知道我可以通过 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);
}

}

对于你的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 
    }
}

不确定您所说的 "id" 是什么意思,如果您谈论的是可绘制 ID、图像文件的路径,或者任何识别图像的方式。这在很大程度上取决于您如何填充列表。您根本没有提供任何代码。

但由于您有一个 ListView,我想您有一个适配器,并且您正在使用一些数据(例如数组、数据库等)来支持该适配器。当您单击一个项目时,您会收到一个 onItemClick 回调使用您单击的项目的索引。您应该能够使用此索引找到您从数据源中单击的图像。

然后在将其传递给 另一个 activity 时,好吧,这又取决于您如何表示图像,但您应该能够传递任何数据您需要在第二个 activity.

之外的意图中表示图像

可以使用ListView的setOnItemClickListener方法获取项clicked.Because一项一张图片,即可获取目标图片。

1.Step

您可以创建一个包含资源 ID 的整数数组,而不是获取资源 ID,例如,

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

将此数组分配给您的 ListView 图像项

2.Step

现在可以使用 Lists on item click 方法轻松获取所选列表项或图像的位置

listView.setOnItemClickListener(新的 OnItemClickListener() {} )

3.Step 只需将您的 ResourceID 数组和点击位置传递给 next/target activity 并使用它,而不是传递 resourceID

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

中的静态 ResourceID

即 -> yourImageView.setImageResource(FirstActivity.ResourceID[位置])