[英]How to start an activity when an item from the listview is clicked?
I have list items or an array of items in strings.xml
. 我在strings.xml
有列表项或项数组。 I want to start an Activity
when an item is clicked but my array list is defined in strings.xml
. 单击某个项目但我的数组列表在strings.xml
定义时,我想启动一个Activity
。 Please Help. 请帮忙。 Let's say item number One Opens ActivityItem1
and so on... 假设商品编号One打开ActivityItem1
,依此类推...
This is my XML file: 这是我的XML文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<AutoCompleteTextView
android:layout_width="match_parent"
android:layout_height="65dp"
android:hint="@string/search"
android:id="@+id/txtsearch"/>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView">
</ListView>
</LinearLayout>
And This My Strings.xml 这是我的Strings.xml
<resources>
<array name="allduas">
<item>Item Number 1</item>
<item>Item Number 2</item>
<item>Item Number 3</item>
<item>Item Number 4</item>
<item>Item Number 5</item>
<item>Item Number 6</item>
<item>Item Number 7</item>
<item>Item Number 8</item>
<item>Item Number 9</item>
<item>Item Number 10</item>
<item>Item Number 10</item>
<item>Item Number 12</item>
<item>Item Number 13</item>
<item>Item Number 14</item>
<item>Item Number 15</item>
<item>Item Number 16</item>
<item>Item Number 17</item>
<item>Item Number 18</item>
<item>Item Number 19</item>
<item>Item Number 20</item>
<item>Item Number 21</item>
<item>Item Number 22</item>
<item>Item Number 23</item>
<item>Item Number 24</item>
<item>Item Number 25</item>
<item>Item Number 26</item>
<item>Item Number 27</item>
<item>Item Number 28</item>
<item>Item Number 29</item>
<item>Item Number 30</item>
</array>
</resources>
And this is my java file 这是我的java文件
public class AllDuasActivity extends Activity {
public ListView listView;
public String[] items;
public ArrayAdapter<String> adapter;
public AutoCompleteTextView ac;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.allduas);
ac = (AutoCompleteTextView)findViewById(R.id.txtsearch);
items = getResources().getStringArray(R.array.allduas);
listView = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, items);
listView.setAdapter(adapter);
ac.setAdapter(adapter);
}
}
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
if(position==1)
startActivity(this,Activity1.class);
}
});
try this . 尝试这个 。
It is really easy to do with a ListView
component. 使用ListView
组件确实很容易。 Just add OnItemClickListener
as following: 只需添加OnItemClickListener
,如下所示:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(context, DetailsActviity.class);
intent.putExtra("position", position)
context.startActivity(intent)
}
});
Class<?> cls = Class.forName(className);
Get String className from your xml file for example, but it should be full link such as com.myapp.MyClass. 例如,从您的xml文件中获取String className,但是它应该是完整链接,例如com.myapp.MyClass。 Then start Activity with this class name. 然后使用该类名称启动Activity。
public void onItemClickListener() {
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = null;
switch (position) {
case POSITION_ONE:
intent = new Intent(context, ActivityOne.class);
break;
case POSITION_TWO:
intent = new Intent(context, ActivityTwo.class);
break;
case POSITION_THREE:
intent = new Intent(context, ActivityThree.class);
break;
}
context.startActivity(intent)
}
}
});
}
You can have as many switch cases as you have activities. 您可以拥有与活动一样多的开关盒。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.