简体   繁体   中英

listview item click opens specific fragment viewpager

How can I open fragments inside second activity by listview item clicks from main activity. I don't know how to open a specific viewpager fragment by list view item click like: Fragment 1 of listview opens the fragment 1 of scrolling activity and so on. If you want I can send you the scrolling activity java codes.

public class MainActivity extends AppCompatActivity implements 
View.OnClickListener {
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Button btnSimpleTabs = (Button) findViewById(R.id.scrollingTabs);

    btnSimpleTabs.setOnClickListener(this);
    listView = (ListView) findViewById(R.id.listView1);
    String[] values = new String[]{
            "Fragment 1   ::",
            "Fragment 2   ::",
            "Fragment 3   ::",
            "Fragment 4   ::",
            "Fragment 5   ::",
            "and so on....",
    };
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, values){

    };

    listView.setAdapter(adapter);
    //linking from 1 item to other activity stars with if options//
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {

            // global string to class
            String selectedValue = String.valueOf(parent.getItemAtPosition(position));

            switch (selectedValue) {

                case "Fragment 1   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 2   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 3   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 4   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }
                case "Fragment 5   ::": {
                    Intent myIntent = new Intent(view.getContext(), ScrollableTabsActivity.class);
                    startActivityForResult(myIntent, 0);
                    break;
                }

            }


        }
    });
}

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.scrollingTabs:
            startActivity(new Intent(MainActivity.this, ScrollableTabsActivity.class));
            break;

    }
}
}

I think you want to open specific fragment using a view pager in ScrollableTabsActivity class. First, you need to pass reference (which_fragment) means which fragment you need to move so

case "Fragment 1   ::": {
               Intent myIntent = new 
               Intent(view.getContext(), ScrollableTabsActivity.class);
               myIntent.putExtra("which_fragment", 0);//0 is reference for //move framgnet 1
               startActivityForResult(myIntent, 0);
               break;
         }

case "Fragment 2   ::": {
               Intent myIntent = new 
               Intent(view.getContext(), ScrollableTabsActivity.class);
               myIntent.putExtra("which_fragment", 1);//1 is reference for //move framgnet 2
               startActivityForResult(myIntent, 0);
               break;
         }

ans so on...

in ScrollableTabsActivity first set the view pager adapter and one method in viewpager is setCurrentItem

viewpager.setCurrentItem("which_fragment);

you need to call this method after setting adapter like that

viewpager.setCurrentItem(getIntent().getExtra().getInt("which_fragment"));

pass in startActivity intent data, which you will check in SecondActivity and open specific fragment

Intent intent = new Intent(MainActivity.this, ScrollableTabsActivity.class);
intent.putExtra("your_specific_key", key);
startActivity(intent);

And in you new activity you get data by key and open fragment by it

String s = getIntent().getStringExtra("your_specific_key");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM