2015-09-24 5 views
2

Код ListView и нажав на элемент списка, выберете AlertDialog. У AlertDialog есть две радиокнопки «да» и «нет», а затем кнопка «ОК».Каждый элемент списка, чтобы открыть разницу

Когда пользователи выбирают «да», запускается следующий Activity, если выбрано «нет», они остаются в том же Activity.

Моя проблема: вне зависимости от того, какой элемент списка я выбираю, меня берут на ту же «Следующая активность». Я хочу, чтобы меня привлекали разные действия в зависимости от того, какой элемент списка я выбираю.

listview = (ListView) findViewById(R.id.mylistview); 
final String[] items = new String[]{"IOS", "ANDROID", "WINDOWS"}; 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_expandable_list_item_1, items); 
listview.setAdapter(adapter); 

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

     int itemposition = position; 

     String itemvalue = (String) listview.getItemAtPosition(position); 
     final CharSequence[] items1 = {"yes", "no"}; 
     final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
     builder.setTitle("slection confirmation"); 

     builder.setCancelable(false); 
     builder.setSingleChoiceItems(items1, -1, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       selection = (String) items1[which]; 
       Toast.makeText(getApplicationContext(), items1[which], Toast.LENGTH_SHORT).show(); 

      } 
     }); 
     builder.setNeutralButton("OK",new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       switch (selection) 
       { 
        case("yes"): 
         Intent myint=new Intent(MainActivity.this,secondpage.class); 
         myint.putExtra("act1",""); 
         startActivity(myint); 
         break; 
        case("no"): 
         dialog.cancel(); 
         break; 
       } 
      } 
     }); 
     AlertDialog alert = builder.create(); 
     alert.show(); 
    } 
    }); 

} 
} 

ответ

0

Во-первых, создать строковые ресурсы для всех имен классов различные виды деятельности. В файле «Рез/strings.xml», вы можете написать

<string name="sFirstClass">my.package.name.MyFirstClass</string> 
<string name="sSecondClass">my.package.name.MySecondClass</string> 

Пожалуйста, обратите внимание, что важно использовать полный путь к деятельности.

Затем в методе 'onItemClick()' вашего OnItemClickListener вы определяете переменную String и инициализируете ее в зависимости от позиции элемента списка кликов.

// 'final' is important so the String will be visible 
// inside the dialog button's 'onClick()' method 
final String SECONDPAGE_CLASS = getMyClass(position); 

где 'getMyClass()' это метод, в соответствии с положением и целевой активности:

private String getMyClass(int pos) 
{ 
    String myClass; 
    switch (pos) 
    { 
    case 0: myClass = getString(R.string.sFirstClass); 
      break; 
    case 1: myClass = getString(R.string.sSecondClass); 
      break; 
    //... 
    default: // do whatever is appropriate 
    } 
return myClass; 
} 

Теперь для OK-кнопки можно определить Intent, как

try 
{ 
    Intent myint = new Intent(MainActivity.this, Class.forName(SECONDPAGE_CLASS)); 
} 
catch (ClassNotFoundException e) 
{ 
    e.printStackTrace(); 
} 
+0

О, это полезно спасибо :) (Y) – anusha

-1

Ваш являются жестко прописывать second.class в намерениях, а не попытаться использовать динамическую переменную, которая хранит значение класса на основе элемента, который вы нажали

public static Activity ClASS_NAME; 
    //set CLASS_NAME based on item position for example 
    switch (selection) 
         { 
          case("yes"): 
           Intent myint=new Intent(MainActivity.this,CLASS_NAME); 
           myint.putExtra("act1",""); 
           startActivity(myint); 
           break; 
          case("no"): 
           dialog.cancel(); 
           break; 
         } 
+0

в У меня появилась идея, но я начал изучать Android пару недель назад, и я не знаком с тем, как использовать динамические переменные. Я попробую это сделать. спасибо :) – anusha

 Смежные вопросы

  • Нет связанных вопросов^_^