使用列表视图显示长列表(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();
			        }
			    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值