【问题标题】:Adding multiple event to listview向列表视图添加多个事件
【发布时间】:2012-02-15 21:59:35
【问题描述】:

我搜索了 stackoverflow,但找不到答案(确定某处有答案),但我正在尝试为每个 listview 输入添加一个活动。我可以用一个意图来管理它,但是我如何给每个列表视图输入一个单独的活动。所以说清楚,我想让每个项目都有一个单独的活动。

当前使用此代码启动活动,但希望为每个项目单独活动。

public class ListviewActivityActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // storing string resources into Array
    String[] adobe_products = getResources().getStringArray(R.array.list_products);

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products));

    ListView lv = getListView();

    // listening to single list item on click
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {

          // selected item
          String product = ((TextView) view).getText().toString();

          // Launching new Activity on selecting single List Item
          Intent i = new Intent(getApplicationContext(), BMICalculatorActivity.class);
          startActivity(i);


      }
    });
}

已尝试添加此内容,但未成功

private static final int ACTIVITY_0 = 0;
          private static final int ACTIVITY_1 = 1;
          private static final int ACTIVITY_2 = 2;


          protected void onListItemClick(ListView l, View v, int position, long id)
          {
              super.onListItemClick(l, v, position, id);
              final Intent intent = new Intent();
              // Set up different intents based on the item clicked: 
              switch (position)
              {
                  case ACTIVITY_0:
                      intent.setClass(this, listview.activty.BMICalculatorActivity.class);
                      break;
                  case ACTIVITY_1:
                      intent.setClass(this, listview.activty.BodyLog.class);
                      break;

我知道它可能很容易排序,所以任何帮助都会令人惊叹。谢谢

【问题讨论】:

    标签: android listview android-activity


    【解决方案1】:

    我想你想要这样的东西:

         Intent i = null;
         switch (position)
              {
                  case ACTIVITY_0:
                      i = new Intent(getApplicationContext(), BMICalculatorActivity.class);
                      break;
                  case ACTIVITY_1:
                      i = new Intent(getApplicationContext(), BodyLog.class);
                      break;
              }
    
          if(i != null)
          {
             startActivity(i);
          }
    

    【讨论】:

      【解决方案2】:

      试试这样的:

      // listening to single list item on click
          lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
      
                Intent i;
      
                // selected item
                String product = (String) lv.getItem(position);
                if(product.equals("photoshop"))
                              i = new Intent(ListviewActivity.this, Photoshop.class);
                else if (product.equals("final cut pro"))
                              i = new Intent(ListviewActivity.this, FinalCutPro.class);
                else
                              i = new Intent(ListviewActivity.this, Generic.class);
      
                startActivity(i);
      
      
            }
          });
      

      另一种选择是创建一个 POJO,其中包含列表视图条目的名称和要调用的类。并添加一个数组而不是字符串数组。这将需要使用某种 ArrayAdapter。然后当你得到这个项目时,你只需调用startActivity(new Intent(listviewActivity.this, myPojo.classToCall); 你应该能够在某处找到一个很好的例子......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-21
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多