【问题标题】:How to start an activity when an item from the listview is clicked?单击列表视图中的项目时如何启动活动?
【发布时间】:2017-06-15 14:32:31
【问题描述】:

我在strings.xml 中有列表项或一组项。 我想在单击一个项目时启动一个Activity,但我的数组列表是在strings.xml 中定义的。请帮忙。 假设第一个项目打开ActivityItem1 等等......

这是我的 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>

这是我的 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>

这是我的 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);
    }


}

【问题讨论】:

标签: javascript android xml android-layout listview


【解决方案1】:
    lv.setOnItemClickListener(new OnItemClickListener()
    {
        @Override 
        public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
        { 
            if(position==1)
            startActivity(this,Activity1.class);
        }
    });

试试这个。

【讨论】:

    【解决方案2】:

    使用ListView 组件真的很容易。只需添加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)
                }
            });
    

    【讨论】:

    • 我希望项目 1 开始活动 1,项目 2 开始活动 2,项目 3 开始活动 3 等等.....
    • 大多数涉及 ListView 的情况不需要为每个列表项启动单独的 Activity,因为这种方法有异味。你能详细分享你的用例吗?
    【解决方案3】:
    Class<?> cls = Class.forName(className);
    

    例如,从您的 xml 文件中获取 String className,但它应该是完整的链接,例如 com.myapp.MyClass。 然后用这个类名启动Activity。

    【讨论】:

      【解决方案4】:
      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)
                  }
              }
          });
      }
      

      您可以拥有与活动一样多的开关案例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-14
        • 2014-01-08
        相关资源
        最近更新 更多