Как получить результат списка диалогов - Android - PullRequest
0 голосов
/ 13 апреля 2011

Я новичок в Android. Я застрял, нужна помощь.

У меня есть список как мой Activity. OnItemLongClickListener для любого элемента списка, я отображаю диалог с пользовательским списком (красный, зеленый, синий) и при выборе любого из элементов (красный, зеленый, синий) мне нужно изменить задний цвет выбранный пункт (по которому событие вызвало диалог) списка (основной вид деятельности).

Откроется диалоговое окно, но я застрял, как получить выбранный элемент (из диалога). Ниже мой код.

 public class SimpleList extends ListActivity 
 {  
  String[] contactNames = {"Name 1", "Name 2", "Name 3", "Name 4", "Name 5", "Name 6"};  

 ArrayAdapter<String> contactAdpater;  
 String itemSelected;  
 String choosenColor;  
 private final Context context = this;  

 public void onCreate(Bundle savedInstanceState)   
{  
   super.onCreate(savedInstanceState);  
   ArrayList<String> myContactList = new ArrayList<String>(Arrays.asList(contactNames));  

  OnItemLongClickListener itemChangeColorListener = new OnItemLongClickListener() {  
  @Override  
  public boolean onItemLongClick(AdapterView<?> parent, View arg1, int position, long arg3) {  
     itemSelected = parent.getItemAtPosition(position).toString();  
AlertDialog.Builder builder = new AlertDialog.Builder(context);  
final String[] colorNames = {"Red","Green","Blue"};  
builder.setTitle("Pick a Colour!")    
       .setItems(colorNames, new DialogInterface.OnClickListener()   
              {  
            @Override  
       public void onClick(DialogInterface dialog, int which)   
                 {  
          choosenColor = colorNames[which];  
                    //Toast.makeText(getApplicationContext(), colorNames[which], Toast.LENGTH_SHORT).show(); <<-- its working fine here  

                   //I am not able to access parent here... I want to perform,  
                 **//parent[position].setBackgroundColor(Color.RED); in case Red is selected from Dialog**  

      }  
         });  
             builder.show();      
        return false;  
    }  
 };  
 contactAdpater = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,
            myContactList);  
 setListAdapter(contactAdpater);  
 getListView().setOnItemLongClickListener(itemChangeColorListener);   
  }  
 }  

1 Ответ

0 голосов
/ 13 апреля 2011

Да, у вас есть проблема

Вы должны использовать viewBetgroundColor (int color); для изменения цвета, если выбран элемент первого ListView с выбранным цветомиз диалога.

Так что в onClick вы должны использовать:

     choosenColor = colorNames[which];  

 if(choosenColor.equals("Red"))
 {
    view.setBackgroundColor(Color.RED);
 }
 else if(choosenColor.equals("Blue"))
 {
    view.setBackgroundColor(Color.BLUE);
 }
 else if(choosenColor.equals("Green"))
 {
    view.setBackgroundColor(Color.GREEN);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...