Урок 42. Список - ListView

Обсуждение уроков
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 42. Список - ListView

Сообщение Foenix » 26 сен 2013, 20:55

в базу данных, конечно же.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Spinner
Сообщения: 9
Зарегистрирован: 26 сен 2013, 20:51

Re: Урок 42. Список - ListView

Сообщение Spinner » 26 сен 2013, 22:15

Спасибо, значит SimpleCursorAdapter использовать?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 42. Список - ListView

Сообщение Foenix » 26 сен 2013, 22:29

а для записи в бд это не важно, т.к. адаптер использутся для показа списка на экране (т.е если наоборот, ты бешешь данные из таблиц, то нужно использовать SimpleCursorAdapter, например) .
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 42. Список - ListView

Сообщение Radzhab » 28 сен 2013, 23:29

В общем делаю как в уроке. Вылазиит ошибка http://i016.radikal.ru/1309/9a/dd8c39b568d0.png

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 42. Список - ListView

Сообщение trew » 29 сен 2013, 01:33

Radzhab писал(а):В общем делаю как в уроке. Вылазиит ошибка http://i016.radikal.ru/1309/9a/dd8c39b568d0.png

У меня указаны необходимых классы для проекта, проверь может чего не хватает:
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

А так создается адаптер
// создаем адаптер
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);

Надеюсь мои комментарии новичка помогут.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Radzhab
Сообщения: 8
Зарегистрирован: 28 сен 2013, 23:26

Re: Урок 42. Список - ListView

Сообщение Radzhab » 29 сен 2013, 01:40

Увы. Не помогло. пишет Gradle: cannot find symbol constructor ArrayAdapter(<anonymous android.view.View.OnClickListener>,int,java.lang.String[])

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение rezak90 » 29 сен 2013, 10:57

this должно ссылаться на контекст, у тебя скорее всего ссылается на что то иное.
R.id.team
Политика на форуме запрещена

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение Isaev » 17 окт 2013, 14:24

И внутри находим используемый нами simple_list_item_1
Двойной клик на него и смотрим содержимое:
а в IDEA не просматривает(
говорит что не правильный формат xml и не найден тег начала, отображает чушь какую-то
возможно не распаковывает из jar

а это проблемма, т.к. нет примера для создания своего элемента.... как бы его просмотреть?
Последний раз редактировалось Isaev 18 окт 2013, 09:13, всего редактировалось 1 раз.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 42. Список - ListView

Сообщение Foenix » 17 окт 2013, 14:38

все прекрасно делают свои строки для листвью без просмотра этого злополучного файла

а чтоб его посмотреть - нужно скачать исходники. Сделать это можно в окне SDK manager
почему ошибка появляется - не знаю :(
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение Isaev » 18 окт 2013, 09:15

Foenix, хорошо, а где тогда можно посмотреть какие вообще для данного класса возможны свойства?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 42. Список - ListView

Сообщение trew » 18 окт 2013, 09:38

Isaev писал(а):
И внутри находим используемый нами simple_list_item_1
Двойной клик на него и смотрим содержимое:
а в IDEA не просматривает(
говорит что не правильный формат xml и не найден тег начала, отображает чушь какую-то
возможно не распаковывает из jar

а это проблемма, т.к. нет примера для создания своего элемента.... как бы его просмотреть?
У меня для eclipce эта проблема решилась следующим образом:
Чтобы открывать шаблоны layout и смотреть xml
Window->General->Editors->File Associations ставим для *.xml двоичный редактор как Default

Попробуй, поискать аналогичные настройки на IDEA.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 42. Список - ListView

Сообщение Foenix » 18 окт 2013, 11:49

Isaev писал(а):Foenix, хорошо, а где тогда можно посмотреть какие вообще для данного класса возможны свойства?
все на http://developer.android.com/develop/index.html если я правильно поняла вопрос.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 42. Список - ListView

Сообщение Isaev » 18 окт 2013, 13:57

trew, в настройках так ничего и не нашёл (хотя их много, мог и не заметить что-то)
но выход тут есть другой, там в дереве проекта в External Libraries помимо android.jar рядом есть развернутый вариант res/layout/... оттуда всё просматривается исправно

Sharp
Сообщения: 2
Зарегистрирован: 12 фев 2013, 16:59

Re: Урок 42. Список - ListView

Сообщение Sharp » 31 окт 2013, 17:14

Есть такой вот ListView
LinearLayout llMain;
ListView mConversationView;
...
llMain.removeAllViews();
LinearLayout.LayoutParams TermParams1 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

mConversationArrayAdapter = new ArrayAdapter<String>(this, R.layout.message);
mConversationView.setAdapter(mConversationArrayAdapter);
mConversationView.setLayoutParams(TermParams1);
llMain.addView(mConversationView);

mConversationArrayAdapter.add("TEXT" );

Как динамически изменить цвет выводимого TEXT не трогая исходный R.layout.message ?

===========
Сам спрашивал.. сам и отвечаю )))
Итак, пришлось написать свой адаптер и уже в нем, в getVeiw можно делать с текстом и фоном что хочешь.
Последний раз редактировалось Sharp 18 ноя 2013, 13:09, всего редактировалось 1 раз.

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: Урок 42. Список - ListView

Сообщение Donart » 06 ноя 2013, 09:16

В текстовой версии урока в main.xml в TextView есть строка android:text="@string/hello", а надо ведь android:text="@string/hello_world", иначе у копипастов(меня) не запустится. :)

blinov
Сообщения: 1
Зарегистрирован: 15 дек 2013, 14:49

Re: Урок 42. Список - ListView

Сообщение blinov » 15 дек 2013, 14:51

Подскажите пожалуйста,как взять массив данных из txt файла,находящегося на SD карте, и поместить его в List view ?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 42. Список - ListView

Сообщение trew » 15 дек 2013, 15:12

blinov писал(а):Подскажите пожалуйста,как взять массив данных из txt файла,находящегося на SD карте, и поместить его в List view ?
Как загружать данные, рассказано в уроке 75.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Nastasia
Сообщения: 6
Зарегистрирован: 06 янв 2014, 03:46

Re: Урок 42. Список - ListView

Сообщение Nastasia » 14 янв 2014, 02:56

Здравствуйте. Мне нужно создать динамический список, то есть при нажатии на кнопку, чтоб в список добавлялся новый элемент. Я сделала, но проблема в том, что каждый новый элемент добавляется в одну и ту же строку списка, а ранее введенные данные не видны. Где ошибка?

Код: Выделить всё

 ListView listView = (ListView) findViewById(R.id.listpoints);    
 	final ArrayList<String> listpoint = new ArrayList<String>(); 
 	final ArrayAdapter<String> adapter;
 	adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, listpoint); 
 	listView.setAdapter(adapter);

 switch (v.getId()) {
 case R.id.btnok:
        listpoint.add(enterpoints.getText().toString());      
        adapter.notifyDataSetChanged();
        enterpoints.setText("");
break;

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 42. Список - ListView

Сообщение klblk » 14 янв 2014, 05:30

Nastasia писал(а):Здравствуйте. Мне нужно создать динамический список, то есть при нажатии на кнопку, чтоб в список добавлялся новый элемент. Я сделала, но проблема в том, что каждый новый элемент добавляется в одну и ту же строку списка, а ранее введенные данные не видны. Где ошибка?
можно увидеть весь код. Или хотя бы скажите, код приведенный выше выполняется последовательно внутри одной функции или это два несвязных куска?

Nastasia
Сообщения: 6
Зарегистрирован: 06 янв 2014, 03:46

Re: Урок 42. Список - ListView

Сообщение Nastasia » 14 янв 2014, 23:30

Весь код просто длинный, и там много лишнего, не относящегося к вопросу.

Код: Выделить всё

package com.example.streliba;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;



public class BeginShooting extends Activity implements OnClickListener {

  final String LOG_TAG = "myLogs";

  Button btnAdd, btnRead, butStart, butStop, butPause;
  EditText enterpoints, datat, namee;

  DBHelper dbHelper;
  
  int i=1;
  
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.beginshooting);

    btnAdd = (Button) findViewById(R.id.btnok);
    btnAdd.setOnClickListener(this);

    btnRead = (Button) findViewById(R.id.btnRead);
    btnRead.setOnClickListener(this);    
         
    butStart = (Button) findViewById(R.id.buttonstart);
    butStart.setOnClickListener(this);
    
	butPause = (Button) findViewById(R.id.buttonpause);
	butPause.setOnClickListener(this);
    
	butStop = (Button) findViewById(R.id.buttonstop);
	butStop.setOnClickListener(this);
	
    enterpoints = (EditText) findViewById(R.id.enterpoints);
    namee = (EditText) findViewById(R.id.name);
    
    datat = (EditText) findViewById(R.id.data);  
   
   
    dbHelper = new DBHelper(this);
    String curDate = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
    datat.setText(curDate);
    
    Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
    chronometer.setText("00:00:00");
    

  }

  
  @Override
  public void onClick(View v) {
	    
    ListView listView = (ListView) findViewById(R.id.listpoints);
    // Создаём пустой массив для хранения очков
 	final ArrayList<String> listpoint = new ArrayList<String>();
 // Создаём адаптер ArrayAdapter, чтобы привязать массив к ListView
 	final ArrayAdapter<String> adapter;
 	adapter = new ArrayAdapter<String>(this,
 			android.R.layout.simple_list_item_1, listpoint);
 // Привяжем массив через адаптер к ListView
 	listView.setAdapter(adapter);
    
 // создаем объект для данных
    ContentValues cv = new ContentValues();
    // получаем данные из полей ввода
    String points = enterpoints.getText().toString();
    String name = namee.getText().toString();
    String elapsedTime = "00:00:00";
    // подключаемся к БД
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    String curDate = new SimpleDateFormat("dd.MM.yyyy").format(Calendar.getInstance().getTime());
    Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
    String time = (String) chronometer.getText();
    
    
    switch (v.getId()) {
    
    case R.id.buttonstart:
    	chronometer.setBase(SystemClock.elapsedRealtime());
    	chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {

            @Override
            public void onChronometerTick(Chronometer chronometer) {
                CharSequence text = chronometer.getText();
                if (text.length()  == 5) {
                    chronometer.setText("00:"+text);
                } else if (text.length() == 7) {
                    chronometer.setText("0"+text);
                }
            }
        });
        chronometer.start();       
        break;
    case R.id.buttonpause:
    	String pauseq=(String) butPause.getText();    	
    	if(pauseq.equals("Pause")){    		
    		chronometer.stop();    		
    		butPause.setText("Resume");
    		}else{
    		elapsedTime = (String) chronometer.getText();
    		int stoppedMilliseconds=0;
    		String array[]=elapsedTime.split(":");    		
    		stoppedMilliseconds =Integer.parseInt(array[0])*60*60*1000+Integer.parseInt(array[1])*60*1000+Integer.parseInt(array[2])*1000;    		
    		chronometer.setBase(SystemClock.elapsedRealtime()-stoppedMilliseconds);    		
    		chronometer.start();
    		butPause.setText("Pause");
    		}
    	
        break;
    case R.id.buttonstop:
       chronometer.stop();
       break;
    case R.id.btnok:
    	if(points.equals("")){
    		Toast.makeText(this, "Введите результат", Toast.LENGTH_LONG).show();
    	}else{
    	if(name.equals("")){
    		Toast.makeText(this, "Введите имя", Toast.LENGTH_LONG).show();
    	} else if(time=="00:00:00")
    	{
    		Toast.makeText(this, "Включите таймер", Toast.LENGTH_LONG).show();
    	} 
      Log.d(LOG_TAG, "--- Insert in mytable: ---");
           
      cv.put("points", points);
      cv.put("data", curDate);
      cv.put("time", time);
      cv.put("name", name);
      // вставляем запись и получаем ее ID
      long rowID = db.insert("mytable", null, cv);
      Log.d(LOG_TAG, "row inserted, ID = " + rowID);     
      
	  listpoint.add( i+++". "+enterpoints.getText().toString());      
      adapter.notifyDataSetChanged();
	  enterpoints.setText("");
	  }
	  break;
      
    case R.id.btndel:
       
        break;
   
    case R.id.btnRead:
      Log.d(LOG_TAG, "--- Rows in mytable: ---");
      // делаем запрос всех данных из таблицы mytable, получаем Cursor 
      Cursor c = db.query("mytable", null, null, null, null, null, null);

      // ставим позицию курсора на первую строку выборки
      // если в выборке нет строк, вернется false
      if (c.moveToFirst()) {

        // определяем номера столбцов по имени в выборке
        int idColIndex = c.getColumnIndex("id");
        int pointsColIndex = c.getColumnIndex("points");
        int dataColIndex = c.getColumnIndex("data");
        int timeColIndex = c.getColumnIndex("time");
        int nameColIndex = c.getColumnIndex("name");
       
        do {
          // получаем значения по номерам столбцов и пишем все в лог
          Log.d(LOG_TAG,
              "ID = " + c.getInt(idColIndex) + 
              ", points = " + c.getString(pointsColIndex) + 
              ", data = " + c.getString(dataColIndex)+
              ", time = "+c.getString(timeColIndex)+
              ", name = "+c.getString(nameColIndex));
          // переход на следующую строку 
          // а если следующей нет (текущая - последняя), то false - выходим из цикла
        } while (c.moveToNext());
      } else
        Log.d(LOG_TAG, "0 rows");
      c.close();
      break;
   
    }
    // закрываем подключение к БД
    dbHelper.close();
  }
  
  

  class DBHelper extends SQLiteOpenHelper {

    public DBHelper(Context context) {
      // конструктор суперкласса
      super(context, "myDB", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
      Log.d(LOG_TAG, "--- onCreate database ---");
      // создаем таблицу с полями
      db.execSQL("create table mytable ("
          + "id integer primary key autoincrement," 
          + "points text," 
          + "data text,"
          + "time text," 
          + "name text"+");");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
  }

}

Ответить