2012-08-23 89 views
0

我正在創建我的第一個Android應用程序,但我不幸遇到了問題。該應用程序將非常簡單:在起始頁面有一個與相似的項目一個ListView: 第一組 第二組 第三組 ...Android - 通過點擊listview項目來顯示textview

通過點擊這些項目的任何一個新的頁面會顯示了一個單一的textview元素,會有一些描述。就像你點擊'1st group'項目,listview被隱藏起來,一個新頁面顯示'1st group description'文本。

到目前爲止,我可以顯示列表視圖的項目,但是當我點擊它們時,沒有任何反應(我想我錯過了一些基本的東西,但作爲一個非常新的,我找不到它很容易)。

import java.util.ArrayList; 
import java.util.Arrays; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.LinearLayout; 
import android.widget.LinearLayout.LayoutParams; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.view.*; 

public class SimpleListViewActivity extends Activity { 
    LinearLayout.LayoutParams layoutParams; 
    LinearLayout ll; 


    private ListView mainListView ; 
    private ArrayAdapter<String> listAdapter ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Find the ListView resource. 
    mainListView = (ListView) findViewById(R.id.mainListView); 

    // populate the List of groups 
    String[] GROUP = getResources().getStringArray(R.array.group); 
    ArrayList<String> GrList = new ArrayList<String>(); 
    GrList.addAll(Arrays.asList(GROUP)); 

    // Create ArrayAdapter using the list. 
    listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, GrList); 

    // Set the ArrayAdapter as the ListView's adapter. 
    mainListView.setAdapter(listAdapter); 
    ll = (LinearLayout)findViewById(R.id.LinearLayout); 
    layoutParams = new LinearLayout.LayoutParams 
    (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

    mainListView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      TextView t = (TextView) findViewById(R.id.textView1); 
      String[] DESC = getResources().getStringArray(R.array.desc); 
      t.setText(DESC[position]); 
      ll.addView(t); 
     //This is the point that is wrong for sure (and others maybe also). I cannot get the textview shown 
     } 

    }); 

    } 

} 

感謝您的幫助。

+0

「TextView」是否可見?發佈您的XML文件。 – slybloty

+0

要創建layoutParams,不會在您發佈的代碼中使用它們,而應該將layoutparams保留在您從中檢索視圖的xml中。 – josh527

回答

0

我假設你R.layout.main拿着一個ListView與IDS R.id.線性佈局mainListView和R.id.LinearLayout。

例子:我留下了一些明顯的特徵,你會需要像高寬度等。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     > 
     <ListView android:id="@+id/mainListView" /> 
     <LinearLayout android:id="@+id/LinearLayout" /> 
</RelativeLayout> 

在你的項目上點擊一下,所有你需要做的是增加一個TextView,你所做的一切,然後設置mainListView.setVisibility(View.INVISIBLE)和ll.setVisibility(View.VISIBLE)。

如果您的R.layout.main沒有使用RelativeLayout作爲根節點,而是使用LinearLayout,則應該仍然可以通過將Visibilities設置爲View.GONE來達到相同的效果,如果您希望它隱藏和View.VISIBLE如果你想它顯示。

要恢復到能夠看到列表視圖,我將在活動中重寫onBackPressed(),以反轉兩個項目上的Visibilities。另外,請記住從線性佈局中移除所有視圖,以便在下次選擇組中的項目時,它將成爲添加線性佈局時唯一的項目。

有很多簡單的方法可以完成此操作,例如發起查看下一個項目的新活動,但似乎您將所有內容都保存在一個活動中。我也會考慮使用ListActivity而不是基本活動類。

希望這會有所幫助。

0

首先停止使用單詞頁面。說它是一個活動(得讓你在Android區)

一旦點擊開始發生像這樣的新活動:

mainListView.setOnItemClickListener(new OnItemClickListener() { 

String textToPass = GrList.get(position) 
Intent i = new Intent(getBaseContext(), SecondActivity.class);      
i.putExtra("textToPass", textToPass); 
startActivity(i); 

} 

你顯然需要有第二個活動與其相應的佈局文件定義。同樣在第二個活動中,查看如何從第一個活動中獲取包和附加內容以獲取文本到通道字符串

相關問題