Открыть действие, отображающее детали каждой строки в списке

Я хочу открыть представление списка объектов и щелкнуть строку списка, чтобы открыть другое действие, отображающее сведения о новостях этих строк. Пока я могу открыть новое действие, которое отображает имя строки при нажатии строки в списке. Но я не знаю, как сделать так, чтобы для каждой строки отображалась другая информация, такая как адрес, часы работы контактной информации для каждой строки.

это моя первая деятельность, которая показывает список

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

    // Binding resources Array to ListAdapter
    this.setListAdapter(new ArrayAdapter<String>(this, R.layout.hallstudent, R.id.listhall, Buildings_halls));

 }

 protected void onListItemClick(ListView lv, View v, int position, long id){
     super.onListItemClick(lv, v, position, id);     

Intent intent = new Intent();
intent.setClass(StudentHall.this, StudentHallSelect.class);

intent.putExtra("position", position);

// Or / And
intent.putExtra("id", String.valueOf(id));
intent.putExtra("description", getResources().getStringArray(R.array.hallsdescription));
startActivity(intent);

        }               

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    finish();
}
}
this is my second code package 





 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selecthall);
        // TODO Auto-generated method stub


        Intent intent = getIntent(); 
        int position = intent.getIntExtra("position", 0);
        String halldetails=intent.getStringExtra("description");

        TextView TextView1 = (TextView) findViewById(R.id.select_details);
        TextView1.setText(String.valueOf(halldetails));
        // Here we turn your string.xml in an array
        String[] myKeys = getResources().getStringArray(R.array.halls);

        TextView myTextView = (TextView) findViewById(R.id.selecthalllist);
        myTextView.setText(myKeys[position]);


    }
}



 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/select_details"
        android:padding="10dp"
        android:text="@string/news_description"
        android:textAppearance="?android:attr/textAppearanceMedium" />



</LinearLayout>

я получаю имя списка и Null в своей новой активности, но не детали, которые я сохранил в своем файле array.xml. спасибо


person Mesh    schedule 04.02.2015    source источник
comment
Вы пытаетесь спросить, что будет на следующем экране position или id. Или что-то другое. Все, что вы передаете в intent.putExtra, можно использовать на следующем экране.   -  person MDMalik    schedule 04.02.2015
comment
У вас есть позиция элемента, на который нажали в следующем действии. Извлеките информацию, используя ту позицию, из которой она хранится, и отобразите ее.   -  person Rohit5k2    schedule 04.02.2015
comment
да, у меня проблемы с этим. Я пытался получить другую строку массивов, такую ​​​​же, как String [] Buildings из arrays.xml, которая содержит сведения о каждом здании. Но я не мог подключить его к адаптеру. Я пытался создать два отдельных адаптера для каждого массива, но это не сработало.   -  person Mesh    schedule 06.02.2015
comment
и что касается использования намерения, я не знаю, как значение параметра в put.extra (значение, значение) должно содержать детали и передавать их другому действию, поскольку я продолжаю получать ошибку, например, не может быть разрешена для переменной.. должно ли значение быть указано для его использования? Как значение содержит эти данные, без которых я хочу передать другое действие? Извините за дилетантские вопросы!!   -  person Mesh    schedule 06.02.2015


Ответы (2)


Это зависит от того, где и как хранится эта дополнительная информация. Я предпочитаю получать эту информацию из второго действия, используя позицию, но есть и другие способы, если этот вам не подходит.

Вы можете передать всю необходимую информацию, используя тот же метод, который вы используете для позиции. Вы можете добавлять разные типы данных в одно и то же намерение, например int, String, float, long, byte, boolean, Arrays, а также элементы Parcelable и Serializable.

Просто используйте intent.putExtra("key", value); в первом действии и getIntExtra("key", defaultValue), getLongExtra("key", defaultValue), getFloatExtra("key", defaultValue)... во втором действии, в зависимости от типа каждого дополнительного действия.

person Jofre Mateu    schedule 04.02.2015
comment
привет, спасибо за ответы, но у меня есть несколько вопросов относительно этого намерения.putExtra(key, value);.. как/где я могу назначить/хранить свою информацию, чтобы я мог отправить ее, используя значение. Я сохранил эту информацию в файле array.xml следующим образом: ‹string-array name=hallsdescription› ‹item ›Address:, Phone No:, Open Times:‹/item› ‹/string-array› - person Mesh; 06.02.2015
comment
Если вы хотите использовать массив строк, вы должны объявить его следующим образом: <string-array name="hallsdescription"> <item>Address</item> <item>Telephone</item> <item>Opening Times</item> </string-array> Затем в первом действии intent.putExtra("key", getResources().getStringArray(R.array.hallsdescription)); - person Jofre Mateu; 06.02.2015
comment
спасибо за ответ .. я обновил свой код выше, и когда я их выполняю, я вижу только ноль, написанный в новом действии. - person Mesh; 06.02.2015
comment
Должно быть String[] Descriptions = intent.getStringArrayExtra("description"); - person Jofre Mateu; 06.02.2015

В случае передачи выбранного объекта из списка на экран сведений см. здесь: Как просмотреть подробные данные определенного элемента представления списка

В качестве альтернативы, если ваши данные находятся в базе данных SQLite, вы должны:

  1. Используйте CursorAdapter
  2. Передать параметр id выбранного элемента
  3. На экране сведений используйте параметр ID для запроса выбранного объекта.
person dominicoder    schedule 04.02.2015