gpt4 book ai didi

Android:ListView 单击事件无法使用 SimpleAdapter

转载 作者:行者123 更新时间:2023-11-29 17:47:13 28 4
gpt4 key购买 nike

在我的应用程序中,我试图在单击列表项时将 TextView 设置为删除线。但是 Listview clik 项目不起作用。

代码如下:

    listView = ( ListView ) findViewById(R.id.listview);
SimpleAdapter adapter = new SimpleAdapter( this, aList, R.layout.add_list_detail,
new String[] { "txt", "cur" }, new int[] { R.id.txt, R.id.cur } );
// Setting the adapter to the listView
listView.setAdapter(adapter);


Button btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent details = new Intent(AddNewList.this, AddNewGrocery.class); // Call
startActivityForResult(details, 1);
}
});
listView.setClickable(true);

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {

// Object o = lv.getItemAtPosition(position);
/* write you handling code like...
String st = "sdcard/";
File f = new File(st+o.toString());
// do whatever u want to do with 'f' File object
*/

TextView item = (TextView) arg1.findViewById(R.id.txt);
item.setPaintFlags(item.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
}
});


protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1) {
if(resultCode == RESULT_OK){
Bundle b = data.getExtras();
if ( b!= null ){
String strName=data.getStringExtra("name");
String strQty=data.getStringExtra("quantity");
System.out.println(strName);
System.out.println(strQty);





SimpleAdapter adapter = new SimpleAdapter( this, aList, R.layout.add_list_detail,
new String[] { "txt", "cur" }, new int[] { R.id.txt, R.id.cur } );

HashMap<String, String> hm = new HashMap<String,String>();

hm.put("txt", strName);
hm.put("cur",strQty);
aList.add(hm);

// Keys used in Hashmap
String[] from = {"txt","cur" };

// Ids of views in listview_layout
int[] to = {R.id.txt,R.id.cur};


listView.setAdapter(adapter);
adapter.notifyDataSetChanged();

}
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}

最佳答案

我没有在您的代码中发现问题,但我将有效的完整代码发布给您:

主要 Activity .java:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
ListView listView;
Activity activity;

ArrayList<Map<String, String>> aList;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activity = this;
aList = new ArrayList<Map<String, String>>();
String[] from = { "name", "quantity" };
int[] to = { R.id.txt, R.id.cur };
listView = (ListView) findViewById(R.id.add_list_detail);
SimpleAdapter adapter = new SimpleAdapter(this, aList,
R.layout.add_list_detail, from, to);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int position, long arg3) {

TextView item = (TextView) arg1.findViewById(R.id.txt);
item.setPaintFlags(Paint.STRIKE_THRU_TEXT_FLAG);
}
});

Button btnAdd = (Button) findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent details = new Intent(activity, Test.class); // Call
startActivityForResult(details, 1);
}
});
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Bundle b = data.getExtras();
if (b != null) {
String strName = data.getStringExtra("name");
String strQty = data.getStringExtra("quantity");
System.out.println(strName);
System.out.println(strQty);

SimpleAdapter adapter = new SimpleAdapter(this, aList,
R.layout.add_list_detail, new String[] { "txt",
"cur" }, new int[] { R.id.txt, R.id.cur });

HashMap<String, String> hm = new HashMap<String, String>();

hm.put("txt", strName);
hm.put("cur", strQty);
aList.add(hm);

// Keys used in Hashmap
String[] from = { "txt", "cur" };

// Ids of views in listview_layout
int[] to = { R.id.txt, R.id.cur };

listView.setAdapter(adapter);
adapter.notifyDataSetChanged();

}
}
if (resultCode == RESULT_CANCELED) {
// Write your code if there's no result
}
}
}

}

测试.java:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Test extends Activity{


@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.testlayout);
Button button = (Button) findViewById(R.id.back_button);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent returnIntent = new Intent(); returnIntent.putExtra("name","myname1"); returnIntent.putExtra("quantity","quantity234"); setResult(RESULT_OK,returnIntent); finish();

}
});


}
}

add_list_detail.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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mytest.MainActivity"
android:orientation="horizontal" >

<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

<TextView
android:id="@+id/cur"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />

</LinearLayout>

activity_main.xml:

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mytest.MainActivity" >



<ListView
android:id="@+id/add_list_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="153dp" >
</ListView>

<Button
android:id="@+id/btnAdd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginLeft="53dp"
android:layout_marginTop="40dp"
android:layout_toRightOf="@+id/textView1"
android:text="Button" />

</RelativeLayout>

测试布局.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button
android:id="@+id/back_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />

</LinearLayout>

关于Android:ListView 单击事件无法使用 SimpleAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25651576/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com