2013-12-01 4 views
0

Внутри setOnItemClickListener Я использую намерение начать новую деятельность. Я поставил 7 строк как дополнительные для этого намерения. Когда я нажимаю элемент (из списка ListView), я хочу, чтобы все эти дополнительные функции отображались (на новом экране). Но я вижу только первые 4 дополнения. Вот файл макета для нового вида деятельности:Начало деятельности с использованием намерения с дополнительным не показывает все дополнительные услуги

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/address_entry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="28dip" /> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

     <TextView 
      android:id="@+id/city_entry" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="28dip" /> 
     <TextView 
      android:id="@+id/zip_entry" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="28dip" /> 
     <TextView 
      android:id="@+id/state_entry" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="28dip" /> 
    </LinearLayout>  

    <TextView 
     android:id="@+id/name_entry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="28dip" /> 
    <TextView 
     android:id="@+id/number_entry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="28dip" /> 
    <TextView 
     android:id="@+id/store_id_entry" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="28dip"/> 
</LinearLayout> 

Тогда вот код Слушатель:

lv_custom.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     //Log.v("ITEM",lv_custom.getItemAtPosition(position).toString()); 
     c.moveToPosition(position); 
     String adr = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_ADDRESS)); 
     String city = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_CITY)); 
     String name = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_NAME)); 
     String store_id = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_STORE_ID)); 
     String phone = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_PHONE)); 
     String zip = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_ZIP)); 
     String state = c.getString(c.getColumnIndex(MySQLiteHelper.COLUMN_STATE)); 
     Intent intent=new Intent(DisplayActivity.this,DisplayInfoActivity.class); 
     intent.putExtra("Address: ",adr); 
     intent.putExtra("City: ", city); 
     intent.putExtra("Zip: ", " " + zip + ", "); 
     intent.putExtra("State: ", state); 
     intent.putExtra("Name: ", name); 
     intent.putExtra("Store ID: ", "Store ID " + store_id); 
     intent.putExtra("Phone: ", phone); 
     startActivity(intent); 
    } 
}); 

Вот новый код вида деятельности:

public class DisplayInfoActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list_entry); 

     TextView address = (TextView) findViewById(R.id.address_entry); 
     TextView city = (TextView) findViewById(R.id.city_entry); 
     TextView zip = (TextView) findViewById(R.id.zip_entry); 
     TextView state = (TextView) findViewById(R.id.state_entry); 
     TextView name = (TextView) findViewById(R.id.name_entry); 
     TextView store_id = (TextView) findViewById(R.id.store_id_entry); 
     TextView phone = (TextView) findViewById(R.id.number_entry); 
     Intent intent = getIntent(); 
     address.setText(intent.getStringExtra("Address: ")); 
     city.setText(intent.getStringExtra("City: ")); 
     zip.setText(intent.getStringExtra("Zip: ")); 
     state.setText(intent.getStringExtra("State: ")); 
     name.setText(intent.getStringExtra("Name: ")); 
     store_id.setText(intent.getStringExtra("Store ID: ")); 
     phone.setText(intent.getStringExtra("Phone: ")); 
    } 
} 

Проблема заключается в том, что он показывает только адрес, город, почтовый индекс и состояние. Он не показывает имя, идентификатор магазина и номер телефона. Что с ними происходит? Почему они не отображаются/не отображаются на новом экране? На самом деле, прежде чем я добавил дополнительные дополнения, я мог видеть все дополнения в моих намерениях. Есть ли проблема с количеством дополнительных услуг? Спасибо за помощь, если у вас есть ответ для меня!

+0

Если во втором действии TextView store_id отображается «Идентификатор магазина», затем ваше намерение ext ras проходят правильно. Вы можете получать пустые строки из своего курсора. Возможно, вы захотите проверить, что эти значения существуют в вашей базе данных. –

+0

Это странно, по крайней мере, для идентификатора магазина вы должны видеть, что отображается «Идентификатор магазина», потому что это значение, которое вы отправляете. Вы говорите, что даже не видите этого? Если вы это сделаете: name.setText ("some_name"); store_id.setText ("some_store_id"); phone.setText ("some_phone_num"); что ты видишь? –

ответ

2

Вы можете упростить добавление дополнительных услуг - нет необходимости использовать дополнительные символы в качестве ключа:

intent.putExtra("Address",adr); 
intent.putExtra("City", city); 
intent.putExtra("Zip", " " + zip + ", "); 
intent.putExtra("State", state); 
intent.putExtra("Name", name); 
intent.putExtra("StoreID", "Store ID " + store_id); 
intent.putExtra("Phone", phone); 

и, соответственно, в вашем DisplayInfoActivity:

address.setText(intent.getStringExtra("Address")); 
city.setText(intent.getStringExtra("City")); 
zip.setText(intent.getStringExtra("Zip")); 
state.setText(intent.getStringExtra("State")); 
name.setText(intent.getStringExtra("Name")); 
store_id.setText(intent.getStringExtra("StoreID")); 
phone.setText(intent.getStringExtra("Phone")); 

Далее, вы пробовали печатать дополнительные услуги в LogCat , если ваш макет неверен? Добавьте это ниже строк, где вы извлекаете дополнительные услуги:

Log.d("MYTAG", "Name: " + intent.getStringExtra("Name")); 

и посмотреть, можете ли вы его увидеть в ловушке. Если да, возможно, ваш макет не отображает все те TextView.

Btw, попробуйте переместить последние 3 TextViews (name, store_id и number) в ваш файл макета INSIDE второй LinearLayout (вместе со всеми другими текстовыми изображениями), чтобы посмотреть, отображаются ли они.

+0

Да, макет был неправильным.Мне пришлось заменить высоту внутреннего макета на андроид: layout_height = "74dp", где раньше это был android: layout_height = "match_parent". Таким образом, дополнительная информация была вне экрана. Спасибо всем! – Monica

1

Ваша внутренняя горизонтальная высота LinearLayout установлен в match_parent:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

Таким образом, она тянется к нижней части экрана и не оставляет места для других ваших трех TextViews. Поэтому он должен быть установлен в wrap_content:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
1

Ваш макет неправильно

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/address_entry" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="28dip" /> 
<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal" > 

... 

Вы должны

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 
<TextView 
    android:id="@+id/address_entry" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="28dip" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

... 

Потому что ваш второй LinearLayout принимает все оставшиеся экран