2015-07-08 3 views
1

EDIT (?): Нужно знать, как создать ArrayList наполненном TextViewконструктор ArrayList адаптер не

Я пытаюсь создать ArrayAdapter для многомерные (2D) ArrayList:

 final ArrayAdapter<ArrayAdapter<ArrayList<String>>> adapterNames = new ArrayAdapter<ArrayAdapter<ArrayList<String>>>(this,android.R.layout.simple_list_item_1, android.R.id.text1, arrayNamesOne); 

Это ошибка журнала я получаю:

Error:(28, 76) error: no suitable constructor found for ArrayAdapter(MainActivity,int,int,ArrayList>) constructor ArrayAdapter.ArrayAdapter(Context,int,int,ArrayAdapter>[]) is not applicable (argument mismatch; ArrayList> cannot be converted to ArrayAdapter>[]) constructor ArrayAdapter.ArrayAdapter(Context,int,int,List>>) is not applicable (argument mismatch; ArrayList> cannot be converted to List>>)

Если вы предпочитаете, чтобы лучше рассмотреть на весь код заинтересованному, здесь вы идете:

public class MainActivity extends ActionBarActivity { 
//1ST DECLARATION 
ArrayList<ArrayList<String>> arrayNamesOne = new ArrayList<ArrayList<String>>(); 
ListView listNamesOne; 
TextView namesTextOne; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    //1ST SETUP 
    listNamesOne = (ListView) findViewById(R.id.listNamesId); 
    namesTextOne = (TextView) findViewById(R.id.namesTexter); 

    final ArrayAdapter<ArrayAdapter<ArrayList<String>>> adapterNames = new ArrayAdapter<ArrayAdapter<ArrayList<String>>>(this,android.R.layout.simple_list_item_1, android.R.id.text1, arrayNamesOne); 
    listNamesOne.setAdapter(adapterNames); 
    //END 1ST SETUP 

    //1ST BUTTON '+' 
    Button buttonPlus = (Button)findViewById(R.id.buttonPlus); 
    buttonPlus.setOnClickListener(
      new Button.OnClickListener() { 
       //CLICK EVENT 
       @Override 
       public void onClick(View v) { 
        //IF EMPTY 
        if (namesTextOne.getText().toString().isEmpty()){ 
         Context context = getApplicationContext(); 
         CharSequence text = "Add an item first"; 
         int duration = Toast.LENGTH_SHORT; 
         Toast.makeText(context, text, duration).show(); 
        //IF SPACES ONLY 
        }else if(namesTextOne.getText().toString().trim().isEmpty()){ 
         Context context = getApplicationContext(); 
         CharSequence text = "You can't use spaces only"; 
         int duration = Toast.LENGTH_SHORT; 
         namesTextOne.setText(""); 
         Toast.makeText(context, text, duration).show(); 
        //ALRIGHT, ADD IT! 
        } else if(!namesTextOne.getText().toString().isEmpty()) { 
         arrayNamesOne.add(0, (ArrayList<String>) namesTextOne.getText()); 
         adapterNames.notifyDataSetChanged(); 
         namesTextOne.setText(""); 
        } 

       } 
      } 
    ); 
} 
+0

Ну, если вы пытаетесь сделать ArrayAdapter в течение ArrayList из ArrayLists, то вы должны изменить свой вызов, чтобы отразить это. Прямо сейчас вы создаете ArrayAdapter для ArrayAdapters ArrayLists. Это то, что вы хотите? –

+0

Нет, я хочу, чтобы первое, что вы сказали, вы правы;) – FET

+0

Вместо 2-мерного массива вам следует, вероятно, рассмотреть использование «GridView» или «RecyclerView» с помощью «GridLayoutManager». – tachyonflux

ответ

1

Если вы создавали адаптер для списка строк он хотел бы это:

ArrayList<String> array = new ArrayList<String>(); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, array); 

Так адаптер для списка списков строк будет выглядеть так:

ArrayList<ArrayList<String>> array = new ArrayList<ArrayList<String>>(); 
ArrayAdapter<ArrayList<String>> adapter = new ArrayAdapter<ArrayList<String>>(this,android.R.layout.simple_list_item_1, android.R.id.text1, array); 
+0

Удивительный, но теперь эта строка кода не работает: '(ArrayList ) namesTextOne.getText()); '@karaokyo – FET

+0

Это ошибка: Unchecked cast: 'java.lang.CharSequence' to 'java.util.ArrayList ' less ... (Ctrl + F1) Сигналы помещают, где компилятор выдает предупреждение без предупреждения, например: void f (Карта HashMap) { map.put («ключ», «значение»); } Подсказка: Pass -Xlint: не установлен в javac, чтобы получить более подробную информацию. – FET

+0

Вы производите 'CharSequence' в' ArrayList'. Почему вы думаете, что это сработает? – tachyonflux

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