Android 当kaypad不可见或可见时,Listview交换EditText内的文本
问题:在Listview中交换EditText中的文本。它发生在键盘不可见或可见时。如下图所示 代码:ListView活动类:Android 当kaypad不可见或可见时,Listview交换EditText内的文本,android,android-listview,android-edittext,android-keypad,Android,Android Listview,Android Edittext,Android Keypad,问题:在Listview中交换EditText中的文本。它发生在键盘不可见或可见时。如下图所示 代码:ListView活动类: public class DayPlannerFormActivity extends Activity { private TextView txtHeader; private Context mContext; private ListView lvDayplannerFrom; private FormDayPla
public class DayPlannerFormActivity extends Activity {
private TextView txtHeader;
private Context mContext;
private ListView lvDayplannerFrom;
private FormDayPlannerAdapter adapter;
private Activity activity;
final Handler mHandler = new Handler();
private Vector<DayPlannerForm> list = new Vector<DayPlannerForm>();
final Runnable mUpdateResults = new Runnable() {
public void run() {
updateResultsInUi();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dayplanner);
mContext = this;
activity = this;
txtHeader = (TextView) findViewById(R.id.txtHeader);
txtHeader.setText(R.string.haivlate);
lvDayplannerFrom = (ListView) findViewById(R.id.lvDayplanner);
startfetchOperation();
}
private void updateResultsInUi() {
adapter= new FormDayPlannerAdapter(activity,list);
lvDayplannerFrom.setAdapter(adapter);
}
protected void startfetchOperation() {
Thread t = new Thread() {
@Override
public void run() {
getData();
}
};
t.start();
}
private void getData() {
try{
list.clear();
DayPlannerForm dpf = new DayPlannerForm("Task Name 1","","");
list.add(dpf);
dpf =new DayPlannerForm("Task Name 2","","");
list.add(dpf);
mHandler.post(mUpdateResults);
} catch (Exception e){
mHandler.post(mUpdateResults);
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
try{
if(lvDayplannerFrom != null)
lvDayplannerFrom.setAdapter(null);
} catch (Exception e){}
}
}
公共类DayPlannerFormActivity扩展活动{
私有文本视图txtHeader;
私有上下文;
私有ListView lvDayplannerFrom;
专用FormDayPlanner适配器;
私人活动;
最终处理程序mHandler=新处理程序();
私有向量列表=新向量();
最终可运行mUpdateResults=新可运行(){
公开募捐{
updateResultsInUi();
}
};
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.dayplanner);
mContext=这个;
活动=此;
txtHeader=(TextView)findViewById(R.id.txtHeader);
setText(R.string.haivlate);
lvDayplannerFrom=(ListView)findViewById(R.id.lvDayplanner);
startfetchOperation();
}
私有void updateResultsInUi(){
适配器=新FormDayPlannerAdapter(活动、列表);
lvDayplannerFrom.setAdapter(适配器);
}
受保护的void startfetchOperation(){
线程t=新线程(){
@凌驾
公开募捐{
getData();
}
};
t、 start();
}
私有void getData(){
试一试{
list.clear();
DayPlannerForm dpf=新的DayPlannerForm(“任务名称1”、“任务名称”、“任务名称”);
列表。添加(dpf);
dpf=新的DayPlanner表单(“任务名称2”、“任务名称”、“任务名称”);
列表。添加(dpf);
mHandler.post(mUpdateResults);
}捕获(例外e){
mHandler.post(mUpdateResults);
}
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
试一试{
if(lvDayplannerFrom!=null)
lvDayplannerFrom.setAdapter(null);
}捕获(例外e){}
}
}
代码:列表视图适配器类
public class FormDayPlannerAdapter extends BaseAdapter {
private Activity mActivity;
private static Vector<DayPlannerForm> list;
private static LayoutInflater inflater;
private Context mContext;
public FormDayPlannerAdapter ( Activity _activity,Vector<DayPlannerForm> _list) {
mActivity = _activity;
mContext = _activity;
list = _list;
inflater = (LayoutInflater)mActivity.getSystemService(mActivity.LAYOUT_INFLATER_SERVICE);
}
public static class ViewHolder{
public TextView txtTaskName;
public CheckBox chbAction;
public EditText edtDecription;
}
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi=convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.dayplanner_listitem_form, null);
holder=new ViewHolder();
holder.txtTaskName=(TextView)vi.findViewById(R.id.txtTaskName);
holder.chbAction = (CheckBox) vi.findViewById(R.id.chbAction);
holder.edtDecription = (EditText) vi.findViewById(R.id.edtDecription);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.txtTaskName.setText(list.get(position).getTaskName());
return vi;
}
}
公共类FormDayPlannerAdapter扩展了BaseAdapter{
私人活动能力;
私有静态向量表;
私人静电充气机;
私有上下文;
public FormDayPlannerAdapter(活动\活动,向量\列表){
mActivity=_活动;
mContext=_活动;
列表=_列表;
充气机=(LayoutInflater)mActivity.getSystemService(mActivity.LAYOUT\u充气机\u服务);
}
公共静态类视图持有者{
公共文本视图txtTaskName;
公共卫生;
公开编辑文字说明;
}
public int getCount(){
//TODO自动生成的方法存根
返回list.size();
}
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图vi=转换视图;
视窗座;
if(convertView==null){
vi=充气机。充气(R.layout.dayplanner\u listitem\u表单,空);
holder=新的ViewHolder();
holder.txtTaskName=(TextView)vi.findViewById(R.id.txtTaskName);
holder.chbAction=(复选框)vi.findViewById(R.id.chbAction);
holder.edtDecription=(EditText)vi.findViewById(R.id.edtDecription);
vi.setTag(支架);
}
其他的
holder=(ViewHolder)vi.getTag();
holder.txtaskname.setText(list.get(position.getTaskName());
返回vi;
}
}
如何解决此问题乍看之下,我认为问题是由以下代码引起的:-
DayPlannerForm dpf = new DayPlannerForm("Task Name 1","","");
list.add(dpf);
dpf =new DayPlannerForm("Task Name 2","","");
list.add(dpf);
对于每个任务名称,您应该使用DayPlannerForm类的不同对象
DayPlannerForm dpf1,dpf2;
dpf1 = new DayPlannerForm("Task Name 1","","");
list.add(dpf1);
dpf2 =new DayPlannerForm("Task Name 2","","");
list.add(dpf2);
我认为这可能会解决您的问题。通过在manifest.xml的活动标记中添加安卓:windowSoftInputMode=“adjustPan”此属性来解决问题