【发布时间】:2020-03-11 12:56:05
【问题描述】:
MainActivitymp3 中有带有 Edittext 的列表视图。我希望当我长按每个编辑文本时,会显示新的 MainActivitysentencerecording 然后单击关闭按钮后,此(5)上的值将放入 MainActivitymp3。 这是 MainActivitymp3 活动的 MycustomerAdater 类
public class MyCustomAdapter extends BaseAdapter {
HashMap<String, String> newupdatelist = new HashMap<String, String>();
public Context context;
public static ArrayList<Song> listsong;
private DatabaseSQL datab;
private final String TAG = getClass().getSimpleName();
public MyCustomAdapter(Context context, ArrayList<Song> objects) {
this.context=context;
this.listsong=objects;
}
...
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder viewHolder;
if(convertView==null){
convertView = LayoutInflater.from(context).inflate(R.layout.song_items,parent,false);
viewHolder = new ViewHolder();
viewHolder.tenbai = (TextView) convertView.findViewById( R.id.text);
viewHolder.delaytime = (EditText) convertView.findViewById(R.id.delay);
viewHolder.timeunit = (TextView) convertView.findViewById(R.id.timeunit);
convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}
Song infor = listsong.get(position);
viewHolder.tenbai.setText(infor.getTenbai());
viewHolder.timeunit.setText(infor.getTimeunit());
viewHolder.delaytime.setText(infor.getDelaytime());
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (context instanceof MainActivitymp3) {
//play selection song
((MainActivitymp3)context).playMedia(listsong.get(position).getDuongdan().toString());
}
}
});
viewHolder.delaytime.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// update new value from edittext to listsong array
listsong.get(position).setDelaytime(viewHolder.delaytime.getText().toString() );
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
viewHolder.delaytime.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "vi tri"+ position, Toast.LENGTH_LONG).show();
Intent intend = new Intent(context, MainActivitysentencerecording.class);
Activity origin = (Activity)context;
origin.startActivityForResult(intend, 200);
// Deleted these below lines as @David Wasser answered
//int x= ((MainActivitymp3)context).gio;
// viewHolder.delaytime.setText(String.valueOf( x ));
return true;
});
return convertView;
}
public class ViewHolder{
TextView tenbai;
EditText delaytime;
TextView timeunit;
}
}
这是 MainActivitymp3 类
public class MainActivitymp3 extends AppCompatActivity {
...
public int gio;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
( new MyCustomAdapter( this, fileNames )).onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK){
if(requestCode == 200){
// here comes the data from activity
gio = data.getIntExtra("timedelaysetting",0);
Log.d("MyAdapter", "onActivityResult "+gio);
}
}
}
这里是 MainActivitysentencerecording 活动
public class MainActivitysentencerecording extends AppCompatActivity {
...
//close button click
Intent resultIntent = new Intent();
resultIntent.putExtra("timedelaysetting", sec);
setResult( Activity.RESULT_OK, resultIntent);
finish();
}
请帮忙解决这个问题。我正在寻找您的来信。谢谢
【问题讨论】:
-
您还可以传递包含在适配器中的长按编辑文本的行索引,然后用于查找行
-
对不起!你能输入一些带有代码的单词来回答吗?我不明白你的意思
-
使用事件总线库将数据从应用程序的任何地方传递到任何地方。! greenrobot.org/eventbus
-
@onur taskin。它对我有用。我得到行的值和索引,然后更新 MyCustomAdapter 的数组列表。之后 Listview 设置为新的 MyCustomAdapter 。谢谢您的建议。 :)
标签: android android-intent android-activity android-listview onactivityresult