80,351
社区成员
发帖
与我相关
我的任务
分享
]package com.example.search;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import android.widget.EditText;
import java.util.ArrayList;
import java.io.File;
public class MainActivity extends Activity {
static private ArrayList<String> search_result = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView list = (ListView) findViewById(R.id.result_list);
list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,search_result));
Button searchBn = (Button) findViewById(R.id.search_bn);
searchBn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (search_result != null) {
search_result.clear();
}
EditText et = (EditText) findViewById(R.id.file_name_edit);
MainActivity.this.searchFile(et.getText().toString().trim(), "/sdcard");
((ArrayAdapter)((ListView)MainActivity.this.findViewById(R.id.result_list)).getAdapter()).notifyDataSetChanged();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void searchFile(String filename, String path) {
File[] files = null;
try {
files = new File(path).listFiles();
} catch (Exception e) {
files = null;
Toast.makeText(this, getString(R.string.open_file_err), Toast.LENGTH_SHORT).show();
return;
}
for (File file : files) {
if (file.isDirectory() && file.listFiles() != null) {
searchFile(filename, file.getPath());
} else if (file.isFile()) {
if (filename == null || filename.isEmpty()) {
search_result.add(file.getPath());
} else {
String name = file.getName();
if (name.indexOf(filename) != -1) {
search_result.add(file.getPath());
}
}
}
}
}
} [/code
main.xml
[code=java]<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/input_file_name_cn"
android:id="@+id/label" />
<EditText
android:id="@+id/file_name_edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/label"/>
<Button android:id="@+id/search_bn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="search_bn"
android:layout_below="@id/file_name_edit"/>
<ListView
android:id="@+id/result_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:layout_below="@id/search_bn"/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/result_list"
android:paddingBottom="5dip"
android:paddingLeft="12dip"
android:paddingRight="12dip">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/result_list"
android:textSize="20dip"
android:paddingTop="15px"
android:layout_marginLeft="70px">
</TextView>
<CheckBox android:id="@+id/cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:focusable="false"></CheckBox>
</RelativeLayout>
package com.example.search;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
public class listcheck extends BaseAdapter {
// 填充数据的list
private ArrayList<String> list;
// 用来控制CheckBox的选中状况
private static HashMap<Integer, Boolean> isSelected;
// 上下文
private Context context;
// 用来导入布局
private LayoutInflater inflater = null;
// 构造器
public listcheck(ArrayList<String> list, Context context) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
isSelected = new HashMap<Integer, Boolean>();
// 初始化数据
initDate();
}
// 初始化isSelected的数据
private void initDate() {
for (int i = 0; i < list.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView1(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
// 获得ViewHolder对象
holder = new ViewHolder();
// 导入布局并赋值给convertview
convertView = inflater.inflate(R.layout.listview_item, null);
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
// 为view设置标签
convertView.setTag(holder);
} else {
// 取出holder
holder = (ViewHolder) convertView.getTag();
}
// 设置list中TextView的显示
holder.tv.setText(list.get(position));
// 根据isSelected来设置checkbox的选中状况
holder.cb.setChecked(getIsSelected().get(position));
return convertView;
}
public class ViewHolder{
TextView tv;
CheckBox cb;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
listcheck.isSelected = isSelected;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return null;
}
}
[/quote]
getView1方法中convertView = inflater.inflate(R.layout.listview_item, null);这句的listview_item就是你要添加的item.xml,你修改成你的就是。package com.example.search;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
public class listcheck extends BaseAdapter {
// 填充数据的list
private ArrayList<String> list;
// 用来控制CheckBox的选中状况
private static HashMap<Integer, Boolean> isSelected;
// 上下文
private Context context;
// 用来导入布局
private LayoutInflater inflater = null;
// 构造器
public listcheck(ArrayList<String> list, Context context) {
this.context = context;
this.list = list;
inflater = LayoutInflater.from(context);
isSelected = new HashMap<Integer, Boolean>();
// 初始化数据
initDate();
}
// 初始化isSelected的数据
private void initDate() {
for (int i = 0; i < list.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return list.size();
}
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView1(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
// 获得ViewHolder对象
holder = new ViewHolder();
// 导入布局并赋值给convertview
convertView = inflater.inflate(R.layout.listview_item, null);
holder.tv = (TextView) convertView.findViewById(R.id.item_tv);
holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb);
// 为view设置标签
convertView.setTag(holder);
} else {
// 取出holder
holder = (ViewHolder) convertView.getTag();
}
// 设置list中TextView的显示
holder.tv.setText(list.get(position));
// 根据isSelected来设置checkbox的选中状况
holder.cb.setChecked(getIsSelected().get(position));
return convertView;
}
public class ViewHolder{
TextView tv;
CheckBox cb;
}
public static HashMap<Integer, Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
listcheck.isSelected = isSelected;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
return null;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dip"
android:paddingLeft="12dip"
android:paddingRight="12dip">
<TextView android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/result_list"
android:textSize="20dip"
android:paddingTop="15px"
android:layout_marginLeft="70px">
</TextView>
<CheckBox android:id="@+id/cb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:focusable="false"></CheckBox>
</LinearLayout>