【问题标题】:Listview , open new activity onClickListview ,打开新活动 onClick
【发布时间】:2011-07-12 06:06:07
【问题描述】:

大家好,我已经找了几个小时试图找到解决方案,我的目标是让 Listview 在打开时打开另一个活动。好吧,实际上我让它能够在单击时打开另一个活动,但是我如何获得它以便每个列表项都打开自己的活动?如果这个问题已经得到回答,但我发现的链接并没有真正描述代码在做什么,我感到非常抱歉[是的,我是新手 :)]

这是我使用的代码

@Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      String[] countries = getResources().getStringArray(R.array.countries_array);
      setListAdapter(new ArrayAdapter<String>(this, R.layout.newfile, countries));

      ListView lv = getListView();
      lv.setTextFilterEnabled(true);

      lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
          // When clicked, show a toast with the TextView text
             Intent myIntent = new Intent(view.getContext(), Html_file.class);
             startActivityForResult(myIntent, 0);

        }
      });
    }
}

【问题讨论】:

    标签: android listview


    【解决方案1】:
    lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
            int position, long id) {
            // When clicked, show a toast with the TextView text
            if(position == 1) {
                //code specific to first list item    
                Intent myIntent = new Intent(view.getContext(), Html_file1.class);
                startActivityForResult(myIntent, 0);
            }
    
            if(position == 2) {
                //code specific to 2nd list item    
                Intent myIntent = new Intent(view.getContext(), Html_file2.class);
                startActivityForResult(myIntent, 0);
            }
        }
    });
    

    【讨论】:

      【解决方案2】:
      public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
         switch( position ) {
           case 0:  Intent newActivity = new Intent(this, i1.class);     
                    startActivity(newActivity);
                    break;
           case 1:  Intent newActivity = new Intent(this, i2.class);     
                    startActivity(newActivity);
                    break;
           case 2:  Intent newActivity = new Intent(this, i3.class);     
                    startActivity(newActivity);
                    break;
           case 3:  Intent newActivity = new Intent(this, i4.class);     
                    startActivity(newActivity);
                    break;
           case 4:  Intent newActivity = new Intent(this, i5.class);     
                    startActivity(newActivity);
                    break;
          }
      }
      

      【讨论】:

        【解决方案3】:

        如果您的列表数量有限,您可以在此处使用 switch case

        lv.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                  // When clicked, show a toast with the TextView text
                     Intent myIntent = new Intent(view.getContext(), Html_file.class);
                     startActivityForResult(myIntent, 0);
        
                }
        });
        

        【讨论】:

          【解决方案4】:

          如果您知道单击不同列表项时要打开哪个活动,则只需为列表项分配 id 或标记。
          在onItemClick的回调中,有一个参数View,
          使用它来获取 id 或 tag 以区分它们并调用相应的 Activity。

          【讨论】:

          • 感谢您为更复杂的问题提供答案。
          【解决方案5】:

          // 添加 ArrayList 和 ArrayAdapter:

              final ArrayList<String> listItems = new ArrayList<String>();
                  listItems.add("image_one");
                  listItems.add("image_two");
                  listItems.add("image_three");
          
              ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<>(this, 
                  android.R.layout.simple_list_item_1, listItems);
                  myListView.setAdapter(myArrayAdapter);
          

          // 添加类的ArrayList

              final ArrayList<Class> intents = new ArrayList<Class>();
                  intents.add(image_one.class);
                  intents.add(image_two.class);
                  intents.add(image_three.class);
          

          // 点击列表项从ArrayList of Classes打开Class:

              myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
          
                  @Override
                  public void onItemClick(AdapterView<?> parent, View view, int 
                  position, long id) {
          
                      Intent listIntent = new Intent(getApplicationContext(), 
                      intents.get(position)); 
                      startActivity(listIntent);
                  }
              });
          

          SEE IMAGE OF CLASS NAMES HERE

          【讨论】:

            猜你喜欢
            • 2012-07-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-04-13
            • 1970-01-01
            相关资源
            最近更新 更多