Android 如何使用列表视图项上的按钮删除列表视图项
我希望能够通过单击ListView上的按钮从ListView中删除列表项 所以我认为正确的方法是设置按钮的OnClickListener。问题是,我不知道如何从AddSpeakeActivity.languages中删除语言,以及如何从ListView中删除关联项。我该怎么做?谢谢 以下是我的列表项布局:Android 如何使用列表视图项上的按钮删除列表视图项,android,android-listview,Android,Android Listview,我希望能够通过单击ListView上的按钮从ListView中删除列表项 所以我认为正确的方法是设置按钮的OnClickListener。问题是,我不知道如何从AddSpeakeActivity.languages中删除语言,以及如何从ListView中删除关联项。我该怎么做?谢谢 以下是我的列表项布局: <?xml version="1.0" encoding="utf-8"?> <Linea
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" android:baselineAligned="false" >
<TextView android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_height="wrap_content"
android:text=""
android:layout_width="0dp"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:id="@+id/recordingName"/>
<ImageButton android:src="@drawable/cancel_32"
android:layout_gravity="center"
android:padding="5dip"
android:layout_margin="10dip"
android:scaleType="centerInside"
android:layout_width="60dip"
android:layout_height="60dip"
android:id="@+id/removeButton"/>
</LinearLayout>
以下是相关活动:
package org.lp20.aikuma.ui;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.lp20.aikuma.model.Language;
import org.lp20.aikuma.model.Recording;
import org.lp20.aikuma.R;
import org.lp20.aikuma.util.FileIO;
public class AddSpeakerActivity extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.add_speaker);
languages = FileIO.readDefaultLanguages();
}
@Override
public void onResume() {
super.onResume();
ArrayAdapter<Language> adapter =
new SpeakerLanguagesArrayAdapter(this, languages);
setListAdapter(adapter);
}
public void onAddLanguageButton(View view) {
Intent intent = new Intent(this, LanguageFilterList.class);
startActivityForResult(intent, SELECT_LANGUAGE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent
intent) {
if (requestCode == SELECT_LANGUAGE) {
if (resultCode == RESULT_OK) {
languages.add((Language)
intent.getParcelableExtra("language"));
Log.i("langs", "langs");
}
}
}
static final int SELECT_LANGUAGE = 0;
private List<Language> languages = new ArrayList<Language>();
}
package org.lp20.aikuma.ui;
导入android.app.ListActivity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.lp20.aikuma.model.Language;
导入org.lp20.aikuma.model.Recording;
导入org.lp20.aikuma.R;
导入org.lp20.aikuma.util.FileIO;
公共类AddSpeakeActivity扩展了ListActivity{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(右布局,添加扬声器);
languages=FileIO.readDefaultLanguages();
}
@凌驾
在Resume()上公共无效{
super.onResume();
阵列适配器=
新的SpeakerLanguagesArrayAdapter(此,语言);
setListAdapter(适配器);
}
公共无效onAddLanguageButton(视图){
Intent Intent=newintent(这是LanguageFilterList.class);
startActivityForResult(意图,选择语言);
}
ActivityResult上受保护的void(int requestCode、int resultCode、Intent
意图{
如果(requestCode==选择语言){
如果(resultCode==RESULT_OK){
语言。添加((语言)
intent.getParcelableExtra(“语言”);
Log.i(“langs”、“langs”);
}
}
}
静态最终整数选择_语言=0;
私有列表语言=新的ArrayList();
}
以下是阵列适配器:
package org.lp20.aikuma.ui;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import java.util.List;
import org.lp20.aikuma.model.Language;
import org.lp20.aikuma.R;
public class SpeakerLanguagesArrayAdapter extends ArrayAdapter<Language> {
public SpeakerLanguagesArrayAdapter(Context context, List<Language>
languages) {
super(context, listItemLayout, languages);
inflater = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View _, ViewGroup parent) {
Log.i("langs", "getView");
View recordingView =
(View) inflater.inflate(listItemLayout, parent, false);
final Language language = getItem(position);
TextView recordingNameView =
(TextView) recordingView.findViewById(R.id.recordingName);
ImageButton removeLanguageButton =
(ImageButton) recordingView.findViewById(R.id.removeButton);
removeLanguageButton.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
Log.i("langs", "language: " + language);
}
});
recordingNameView.setText(language.toString());
return recordingView;
}
private static final int listItemLayout =
R.layout.speakerlanguages_list_item;
private LayoutInflater inflater;
}
package org.lp20.aikuma.ui;
导入android.content.Context;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageButton;
导入android.widget.TextView;
导入java.util.List;
导入org.lp20.aikuma.model.Language;
导入org.lp20.aikuma.R;
公共类SpeakerLanguagesArrayAdapter扩展了ArrayAdapter{
公共SpeakerLanguagesArrayAdapter(上下文,列表
语文{
超级(上下文、列表项布局、语言);
充气机=(充气机)
getSystemService(context.LAYOUT\u充气机\u服务);
}
@凌驾
公共视图获取视图(int posi)
removeLanguageButton.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
Log.i("langs", "language: " + language);
languages.remove(language);
notifyDataSetChange();
//here you need to notify the activity list to ensure the data is always right.
}
});