我正在创建我的第一个Android应用程序,但不幸的是我卡住了。应用程序非常简单:在起始页面上有一个ListView,其中包含以下项目: 第一组 第二组 第3组 ...
通过单击这些项目中的任何一项,新页面将显示一个具有某些描述的textview元素。就像您单击“第一组”项目一样,列表视图将被隐藏,并显示一个带有“第一组描述”文本的新页面。
到目前为止,我可以显示列表视图中的项目,但是当我点击它们时,没有任何反应(我想我会错过一些基本的东西,但作为一个非常新的,我无法轻易找到它。)
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 :(得分:0)
您是否尝试在onItemClick()方法中显示Toast消息或设置断点以验证其未到达?我的猜测是,它正在遇到这里描述的问题之一:
答案 1 :(得分: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,你仍然可以通过设置Visibility to View.GONE来实现相同的效果,如果你想隐藏它和View.VISIBLE,如果你想要它显示。
要恢复为能够查看列表视图,我将覆盖活动中的onBackPressed(),以反转这两个项目的可见性。还要记住从线性布局中删除所有视图,以便下次选择组中的项目时,它将是添加时线性布局中的唯一项目。
有更简单的方法可以实现此目的,例如启动新活动以查看下一个项目,但似乎您将所有内容保留在一个活动中。我还会考虑使用ListActivity而不是基本活动类。
希望这有帮助。
答案 2 :(得分:0)
首先停止使用单词页面。称之为活动(必须让你进入Android专区)
点击发生后,启动一项新活动:
mainListView.setOnItemClickListener(new OnItemClickListener() {
String textToPass = GrList.get(position)
Intent i = new Intent(getBaseContext(), SecondActivity.class);
i.putExtra("textToPass", textToPass);
startActivity(i);
}
显然,您需要定义第二个活动及其相应的布局文件。同样在第二个活动中查找如何从第一个活动中获取bundle和extras以获取textToPass String