【问题标题】:how to start new activity via gridview onitemclick?如何通过gridview onitemclick 开始新活动?
【发布时间】:2017-01-10 05:36:34
【问题描述】:

我想在 gridview.like 中打开新活动 on itemclick listner。 单击位置 1(印度)->打开活动 1。单击位置 2(巴西)->打开活动 2。单击位置 3(加拿大)->打开活动 3。 怎么可能呢? 这是我的代码。

   android.widget.AdapterView.OnItemClickListener; 
public class GridViewExampleActivity extends Activity {
 /** Called when the activity is first created. */

private GridviewAdapter mAdapter;
private ArrayList<String> listCountry;
private ArrayList<Integer> listFlag;

private GridView gridView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    prepareList();

    // prepared arraylist and passed it to the Adapter class
    mAdapter = new GridviewAdapter(this,listCountry, listFlag);

    // Set custom adapter to gridview
    gridView = (GridView) findViewById(R.id.gridView1);
    gridView.setAdapter(mAdapter);

    // Implement On Item click listener
    gridView.setOnItemClickListener(new OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            Toast.makeText(GridViewExampleActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show();
        }
    });

}

public void prepareList()
{
      listCountry = new ArrayList<String>();

      listCountry.add("india");
      listCountry.add("Brazil");
      listCountry.add("Canada");
      listCountry.add("China");


      listFlag = new ArrayList<Integer>();

      listFlag.add(R.drawable.india);
      listFlag.add(R.drawable.brazil);
      listFlag.add(R.drawable.canada);
      listFlag.add(R.drawable.china);



}
}

谢谢!!

【问题讨论】:

  • 你可以和onItemClick中的位置进行比较。
  • 您想在每次点击项目时打开相同的活动还是不同的活动?
  • @Newbie Android,我想在点击不同的项目时打开不同的活动
  • @Dhirajkumar Patil 编辑了我的答案,只是检查一下。
  • 谢谢大家。现在我尝试所有答案;)

标签: android gridview start-activity


【解决方案1】:

您可以使用基于位置的意图打开活动

 gridView.setOnItemClickListener(new OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                                        long arg3) {
                    if(position==1) {
                        Intent intent = new Intent(GridViewExampleActivity.this, IndiaActivity.class);
                        startActivity(intent);
                    }
                    else if(position==2)
                    {
                        Intent intent = new Intent(GridViewExampleActivity.this, BrazilActivity.class);
                        startActivity(intent);

                    }
                    Toast.makeText(GridViewExampleActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show();
                }
            });

【讨论】:

  • 我只是编辑 if(position==0) { Intent intent = new Intent(GridViewExampleActivity.this, IndiaActivity.class);开始活动(意图); } else if(position==1) { Intent intent = new Intent(GridViewExampleActivity.this, BrazilActivity.class);开始活动(意图); } 谢谢你;)
【解决方案2】:

在任何情况下开始任何活动都是完全相同的。您只需创建一个意图并将其提供给 startActivity() 方法。

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
            long arg3) {
        if(position == 1) {
            // start activity for India
            startActivity(new Intent(GridViewExampleActivity.this, InidaActivity.class));
         } else if(position == 2) {
            // start activity for Brazil
         }
    }

【讨论】:

    【解决方案3】:

    在您的网格项目中单击侦听器启动活动

    gridView.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
                Toast.makeText(GridViewExampleActivity.this, mAdapter.getItem(position), Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(GridViewExampleActivity.this , YourDetailsActivity.class)
                intent.putExtra("country", listCountry.get(position);
                intent.putExtra("flag", listFlag.get(position);
                startActivity(intent);
            }
        });
    

    并在您的详细活动中从这样的意图中获取数据

    在 onCreate() 中

    country = (String)getIntent().getExtra().get("country");
    flag = (int)getIntent().getExtra().get("flag");
    

    在您的详细信息活动中,您可以检查所选国家并相应地设置数据

    if(country.equals("india")){
        // Show data related to india
    }
    

    【讨论】:

      【解决方案4】:

      您也可以尝试使用国家/地区名称

      switch (listCountry.get(position)) {
      
      
       case "India":
            Intent intent = new Intent(GridViewExampleActivity.this,IndiaActivity.class);
            break;
         case "Brazil":
            Intent intent = new Intent(GridViewExampleActivity.this,BrazilActivity.class);
            break;
         }
      startActivity(intent);
      

      【讨论】:

        【解决方案5】:

        使用此代码 -

          gridview.setOnItemClickListener(new OnItemClickListener() {
        
            public void onItemClick(AdapterView<?> parent, View v,int position, long id) {
        
            switch (position) {
        
            case 0:
                           //Use some different intent here
            Intent i = new Intent(getApplicationContext(), MyActivity.class);
                            i.putExtra("id", position);
                            startActivity(i);
                            break;
        
            case 1:
                    //Use some different intent here
        
            Intent j = new Intent(getApplicationContext(), MyActivity.class);
                            j.putExtra("id", position);
                            startActivity(j);
                            break;
            case 2:
                        //Use some different intent here
        
            Intent k = new Intent(getApplicationContext(), MyActivity.class);
                            k.putExtra("id", position);
                            startActivity(k);
                            break;
            case 3:
                    //Use some different intent here
        
            Intent l = new Intent(getApplicationContext(), MyActivity.class);
                            l.putExtra("id", position);
                            startActivity(l);
                            break;
        
            default:
                            break;
                        }
                    }
                });
        

        这里你可以看到更多解释代码。

        http://www.androidbegin.com/tutorial/android-simple-gridview-tutorial/

        【讨论】:

          【解决方案6】:

          你可以比较位置。

          switch (listCountry.get(position)) {
             case 0:
                Intent intent = new Intent(GridViewExampleActivity.this,IndiaActivity.class);
                break;
             case 1:
                intent = new Intent(GridViewExampleActivity.this,BrazilActivity.class);
                break;
          }
          startActivity(intent);
          

          【讨论】:

            【解决方案7】:

            您需要在 OnItemClickListener 中添加此代码 有两种方法可以做到这一点。如果您有相同的布局但不同的内容,那么您只能创建一个活动并添加额外内容并更改内容。如果你有不同的布局设计,那就用这个吧,

             switch (position) {
             case 0:
               Intent intent = new Intent(GridViewExampleActivity.this,ActivityOne.class);
              break;
             case 1:
              Intent intent = new Intent(GridViewExampleActivity.this,ActivityTwo.class);
              break;
            }
            
            startActivity(intent);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-06-11
              • 1970-01-01
              • 2020-06-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多