如何获取列表视图中视图的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[位置])
我有 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[位置])