我显示了活动中的项目列表,并且我使用了ArrayAdapter,因此我的xml中只能有TextView / EditText。但我希望能够编辑文本并以某种方式保存。现在......我只能编辑,但由于我没有按钮,我无法保存内容。我可以从列表中创建一行不可编辑但可点击吗?要模拟按钮的动作吗?
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_edit_text"
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"
android:background="#035E7B"
/>
类似的东西:
Row1Editable
Row2Editable
Row3Editable
点击这里保存您的修改
public class SingleListItem extends ListActivity {
SweetsXmlController controller;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_list_item);
controller = new SweetsXmlController();
Intent intent = getIntent();
int position = intent.getIntExtra("position", 1);
String[] mTestArray = getResources().getStringArray(R.array.sections);
Sweet toShow = controller.getSweetByPosition(position, mTestArray);
ArrayList<String> res = new ArrayList<>();
res.add(toShow.getName());
res.add("$" + toShow.getPrice());
res.add(toShow.getDescription());
res.add(toShow.getCalories() + "kcal");res.add("Click here to save your changes!");
EditText editText = (EditText) findViewById(R.id.my_edit_text);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
Log.d("HAAAAAAAAAAAAH", "Trying to MOVE TO NEXT ITEM ");
}
@Override
public void afterTextChanged(Editable editable) {
}
});
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(
this,
R.layout.activity_single_list_item,
res);
setListAdapter(adapter);
}
答案 0 :(得分:0)
您需要为此编写自定义适配器 - 请查看http://www.vogella.com/tutorials/AndroidListView/article.html。在适配器的getView()方法中,您可以使用EditText.setEnabled(boolean)方法来切换它是否可编辑。
此外,如果您只需要一个按钮,那么在您的布局中单独使用listview +按钮会更容易。
答案 1 :(得分:0)
我认为您可以使用以下方法:
EditText myEditTextField = new EditText(this);
myEditTextField.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
更改文本后,只需将输出保存在textView中。