使用列表视图显示长列表(Listview)
List视图在一个垂直可滚动的列表中显示一个条目列表。
第一步在xml文件中添加布局
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
注意这儿的id位置
第二步在.java中修改
1定义了一个字符串数组就是要显示的内容;
2这个MainActivity是继承ListActivity
3加载布局setListAdapter();
4处理点击事件
总体代码:
//.xml文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>、
.java文件
import android.app.ListActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
public class MainActivity extends ListActivity {
String[] str = {
"123",
"345",
"567",
"abc",
"def",
"zif"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str));
}
public void onListItemClick(ListView parent, View v, int position, long id)
{
Toast.makeText(this, "You have select " + str[position], Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
进一步优化,在string.xml中保存数据;
第一步在string.xml 中添加一下代码;
<string-array name="str">
<item>111</item>
<item>222</item>
<item>333</item>
<item>444</item>
<item>555</item>
<item>666</item>
</string-array>
第二部在.java中获取字符串
str = getResources().getStringArray(R.array.str);
main.xml 不变
下付代码:
//.java
import android.app.ListActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.Toast;
import java.util.logging.Handler;
import java.util.logging.LogRecord;
public class MainActivity extends ListActivity {
String[] str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ListView listview = getListView();
str = getResources().getStringArray(R.array.str);
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//设置多远
listview.setTextFilterEnabled(true);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, str));
//simple_list_item_checked可以进行帅选。但笔者没有实现;
}
public void onListItemClick(ListView parent, View v, int position, long id)
{
Toast.makeText(this, "You have select " + str[position], Toast.LENGTH_LONG).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
string.xml
resources//为了显示出来去掉了<>
string name="app_name">List</string//为了显示出来去掉了<>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string-array name="str">
<item>111</item>
<item>222</item>
<item>333</item>
<item>444</item>
<item>555</item>
<item>666</item>
</string-array>
获取选择了那些条目:(定义了个一个按钮,当点击时会显示所有已经选择的条目如上图)
public void onCLick(View v)
{
ListView view = getListView();
String stt = "selectde items : \n";
for(int i = 0; i < view.getCount(); ++i)
{
if(view.isItemChecked(i))
{
stt += view.getItemAtPosition(i) + "\n";
}
Toast.makeText(this, stt, Toast.LENGTH_LONG).show();
}
}