android 笔记——listView应用
android上改变listView的选中颜色
ListView选中时默认是黄色,很多时候会和我们软件的配色不符合,那么我就教你如何修改默认的ListView配色,改变ListView选中颜色有两个方法:
1. 在程序中:
Drawable drawable=getResources().getDrawable(R.drawable.touch_feedback);ListView.setSelector(drawable);
android:listSelector=”#00000000″ //后面的颜色可以自己定这样写是透明的
//列表滚动private OnScrollListener ScrollLis = new OnScrollListener() { @Overridepublic void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {} @Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {if(scrollState==OnScrollListener.SCROLL_STATE_IDLE){ ListPos=list.getFirstVisiblePosition(); //ListPos记录当前可见的List顶端的一行的位置 }}};list.setSelection(ListPos);
package com.jason.joysmsyd; import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import android.app.ListActivity;import android.content.Intent;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.View.OnClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.TextView; public class SendMain extends ListActivity implements OnClickListener{ Button buttonMessage,buttonContact,buttonHistory;EditText textMessage; List<Map<String,String>> contacts = new ArrayList<Map<String,String>>(); @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.setContentView(R.layout.layout_send); buttonMessage = (Button) this.findViewById(R.id.ButtonMessage);buttonContact = (Button) this.findViewById(R.id.ButtonContact);buttonHistory = (Button) this.findViewById(R.id.ButtonHistory); textMessage = (EditText)this.findViewById(R.id.EditTextMessage);textMessage.setText(this.getIntent().getExtras().getString("message")); } public void onClick(View v) {// TODO Auto-generated method stubswitch(v.getId()){case R.id.ButtonMessage:this.finish();break;case R.id.ButtonContact:{Intent intent = new Intent();intent.setAction("com.jason.action.contact");this.startActivityForResult(intent, 0);}break;case R.id.ButtonHistory:{Intent intent = new Intent();intent.setAction("com.jason.action.history");this.startActivityForResult(intent, 1);}break;} } protected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data); if (requestCode == 0 && resultCode == RESULT_OK) {this.getcontactFromString(data.getExtras().getString(UserSelectActivity.RETURN_LIST));bindDataToList();}} private void getcontactFromString(String data) {if (data == null || data.length() == 0) {return;} String[] arrayContact = data.split("#");for (String singleContact : arrayContact) {if (singleContact != null && singleContact.length() > 0) {String[] props = singleContact.split(":");if (props.length == 2) {Map<String,String> contact = new HashMap<String,String>();contact.put("name", props[0]);contact.put("phone", props[1]);contacts.add(contact); }} } } private void bindDataToList(){this.setListAdapter(new MyAdapter());} public class MyAdapter extends BaseAdapter{ public int getCount() {// TODO Auto-generated method stubreturn contacts.size();} public Object getItem(int position) {// TODO Auto-generated method stubreturn contacts.get(position);} public long getItemId(int position) {// TODO Auto-generated method stubreturn position;} public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubLayoutInflater inflater = SendMain.this.getLayoutInflater(); final View view = inflater.inflate(R.layout.layout_user_item, null); final TextView textPhone = (TextView) view.findViewById(R.id.text1); final TextView textName = (TextView) view.findViewById(R.id.text2); Button button = (Button)view.findViewById(R.id.buttonDelete); textPhone.setText(contacts.get(position).get("phone")); textName.setText(contacts.get(position).get("name")); button.setTag( position); button.setOnClickListener(new OnClickListener(){ public void onClick(View v) {// TODO Auto-generated method stubint position = Integer.parseInt(v.getTag().toString());contacts.remove(position);MyAdapter.this.notifyDataSetChanged(); //SendMain.this.getListView().refreshDrawableState();}}); return view;} }}public class helloWorld extends Activity { String[] vData = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 要做为ArrayAdapter的资料来源 vData = new String[]{"足球","棒球","篮球"}; // 建立"阵列接收器" ArrayAdapter<String> arrayData = new ArrayAdapter<String>( this , android.R.layout.simple_list_item_1 , vData ); // 建立ListView 物件 ListView lv = new ListView(this); // 设定ListView 的接收器, 做为选项的来源 lv . setAdapter ( arrayData ); // ListView 设定Trigger lv . setOnItemClickListener ( new OnItemClickListener() { public void onItemClick (AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub setTitle( getResources().getString(R.string.app_name) + ": " + vData [ arg2 ]); } }); // 设定ListView 为ContentView setContentView(lv); }}


OnClickListener listener2 = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Map<String, Object> m = new HashMap<String, Object>(); String tiString = tv.getText().toString(); // 注意这里我为什么要取出这个EditText的内容 m.put("prod_na", tiString); // 而不这样写 m.put("prod_na", tv.getText()); m.put("prod_type", tiString); // 因为tv.getText()返回的是Editable对象,真正的数据是被缓存的, // 也就是说你后续的EditText改动都会影响之前添加的Item coll.add(m); // 取回Adapter对象,用于调用notifyDataSetChanged方法。 SimpleAdapter sAdapter = (SimpleAdapter)lv.getAdapter(); sAdapter.notifyDataSetChanged(); } };