0

I have list items or an array of items in strings.xml. I want to start an Activity when an item is clicked but my array list is defined in strings.xml. Please Help. Let's say item number One Opens ActivityItem1 and so on...

This is my XML file:

<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

<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

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);
    }


}
S.R
  • 2,819
  • 2
  • 22
  • 49
Furqan Hussain
  • 135
  • 1
  • 4
  • 14
  • 1
    Possible duplicate of [How to start new activity on button click](https://stackoverflow.com/questions/4186021/how-to-start-new-activity-on-button-click) – S.R Jun 15 '17 at 14:38

4 Answers4

0
    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 .

6155031
  • 4,171
  • 6
  • 27
  • 56
0

It is really easy to do with a ListView component. Just add OnItemClickListener as following:

  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)
            }
        });
  • i want item 1 to start activity1 and item 2 to start activity2,item 3 to start activity3 and so on..... – Furqan Hussain Jun 15 '17 at 14:42
  • Most cases where ListView is involved doesn't require to launch a separate Activity for each list item because this approach smells. Can you share your use case in details? – Konstantin Kiriushyn Jun 15 '17 at 14:55
0
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. Then start Activity with this class name.

luoihocbk
  • 13
  • 5
0
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.

Red M
  • 2,609
  • 3
  • 30
  • 50