作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将一个特定的文件名从 simplecursoradapter 返回到调用它的 Activity 。我试过这个链接 How communicate between Adapter and Activity还有这个Data between activity and adapter但两者都没有帮助我。我在这里发布了 Activity 代码和适配器代码。请帮忙
Activity
videolist = (ListView) findViewById(R.id.VideoMusicList);
videolist.setAdapter(adapter);
//适配器
public class SdCardAdapter extends SimpleCursorAdapter {
static final String TAG = "[SongListAdapter]";
int position;
CheckBox media_selected;
final String SETTING_TODOLIST = "todolist";
private String chk;
private Context context;
private Object itemText;
private ArrayList<string> selectedItems = new ArrayList<string>();
// String file;
private Object convertView;
// private final List<Model> list;
int count;
ListView listview;
private List<Model> list;
private Cursor videocursor;
private LayoutInflater mInflater;
private OnClickListener mClick;
private OnCheckedChangeListener mChecked;
String file_rel_path;
String file_abs_path;
String last_file;
/**
* The Class ViewHolder.
*/
static class ViewHolder {
/** The sdcard_item. Layout of each item in the list view */
RelativeLayout sdcard_item;
LinearLayout sdcard;
/** The title. Textview to display the song title */
TextView media_name;
CheckBox media_selected;
ListView listview;
int position;
}
public SdCardAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, layout, c, from, to);
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View v = super.newView(context, cursor, parent);
final Cursor filecursor = cursor;
final ViewHolder vh = new ViewHolder();
vh.media_name = (TextView) v.findViewById(R.id.sdcard_title);
position = cursor.getPosition();
count = cursor.getCount();
vh.media_selected = (CheckBox) v.findViewById(R.id.sdcard_checkbox);
vh.media_selected
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
System.out.println("checkbox ckicked......");
if (vh.media_selected.isChecked()) {
vh.media_selected.setId(1);
vh.media_selected.getId();
last_file = file_rel_path;
file_rel_path = vh.media_name.getText().toString();
Log.d("filename_........", file_rel_path);
v.setBackgroundColor(Color.GRAY);
} else if (!vh.media_selected.isChecked()) {
file_rel_path="";
vh.media_selected.setId(0);
vh.media_selected.getId();
v.setBackgroundColor(Color.BLACK);
}
Log.d("Position", "" + position);
for (int i = 0; i < count; i++) {
filecursor.moveToPosition(i);
file_abs_path = filecursor.getString(filecursor
.getColumnIndex(MediaStore.Video.Media.TITLE));
if (file_abs_path.equals(file_rel_path)) {
String file_path = filecursor.getString(filecursor
.getColumnIndex(MediaStore.Video.Media.DATA));
Log.d("filename.......", file_path);
}
}
}
});
vh.sdcard_item = (RelativeLayout) v.findViewById(R.id.sdcard_item);
v.setTag(vh);
return v;
}
}
//这是我要传递给之前 Activity 的字符串
String file_path = filecursor.getString(filecursor.getColumnIndex(MediaStore.Video.Media.DATA));
最佳答案
使用接口(interface)回调:
在 SdCardAdapter 类中创建接口(interface):
public interface SdCardAdapterListener
{
public void sendFilePath(String path);
}
在 SdCardAdapter 构造函数中添加一个监听器参数:
private SdCardAdapterListener delegate;
public SdCardAdapter(Context context, int layout, Cursor c, String[] from,
int[] to, SdCardAdapterListener delegate)
{
super(context, layout, c, from, to);
this.delegate = delegate;
}
在 Activity 中:
SdCardAdapter adapter = new SdCardAdapter(this, layout, c, from, to, new SdCardAdapterListener()
{
@Override
public void sendFilePath(String path)
{
// do something with path
}
});
videolist = (ListView) findViewById(R.id.VideoMusicList);
videolist.setAdapter(adapter);
然后,只需调用 SdCardAdapter 中的 delegate.sendFilePath(path) 即可发送到 Activity 中的 sendFilePath 方法。
关于android - 将文件名从 SimpleCursorAdapter 返回到 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9867616/
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!