- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 ViewBinder,到目前为止已成功将其用于 SimpleDateFormat,现在我正在尝试同时获取 Contect 名称而不是数字。
1. 下面的代码显示不会将号码更新为联系人姓名,但适用于日期格式。我该如何解决这个问题?
2. 我尝试在 swiperefresh 上再次添加 View 绑定(bind)器,但刷新后它没有格式化我的日期?
任何帮助将不胜感激:)
这是我的代码:
adapter1.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View arg0, Cursor arg1, int arg2) {
if (arg0.getId() == R.id.lblNumber){
String HeadNum = arg1.getString(arg2);
Uri nameuri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(HeadNum));
Cursor c = getActivity().getContentResolver().query(nameuri, new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME}, null, null, null);
String ContactName = "null";
if (c.moveToFirst()){ ContactName = c.getString(c.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME)); }
((TextView)arg0).setText(ContactName);
}
if(arg0.getId() == R.id.lblDate){
String date = arg1.getString(arg2);
Long timestamp = Long.parseLong(date);
String dateString = sdf.format(new Date(timestamp));
((TextView)arg0).setText(dateString);
return true;
}else
return false;
}
});
lvMsgList.setAdapter(adapter1);
这是 OnRefresh 中的代码:
phmsgSwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener(){
@Override
public void onRefresh(){
Uri inboxURI = Uri.parse("content://mms-sms/conversations");
Cursor b = getActivity().getContentResolver().query(inboxURI, new String[]{"*"}, null, null, "normalized_date desc");
adapter1 = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.row, b,
new String[]{"body", "date", "address", "thread_id"},
new int[]{R.id.lblMsg, R.id.lblDate, R.id.lblNumber, R.id.lblID}, 0);
adapter1.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View arg0, Cursor arg1, int arg2) {
if(arg0.getId() == R.id.lblDate){
String date = arg1.getString(arg2);
Long timestamp = Long.parseLong(date);
String dateString = sdf.format(new Date(timestamp));
((TextView)arg0).setText(dateString);
return true;
}else
return false;
}
});
lvMsgList.setAdapter(adapter1);
phmsgSwipe.setRefreshing(false);
}
});
最佳答案
我通过改变解决了这个问题
((TextView)arg0).setText(ContactName);
至
if (ContactName!=null){
((TextView)arg0).setText(ContactName);
return true;}else return false;
关于java - ViewBinder - null 对象引用/在 SwipeRefresh 上也不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137665/
我使用 SwipeRefreshLayout 重新加载 ListView 的内容。但是每次加载时指示器都会卡住。有什么办法可以解决这个问题吗? 最佳答案 每次手势再次完成时,SwipeRefreshL
我正在使用 MVVM 模式,其中我使用 SwipeRefresh 布局来刷新布局中的回收器 View 。当我拉动它时,即使方法成功完成,它也会继续刷新。 下面是我的代码: MainActivity.j
我正在尝试在我的一个 fragment 中添加一个 SwipeRefreshLayout 布局。当列表包含一些元素时,一切都按预期工作。 问题是我的列表是空的。当列表不包含任何项目时,我有一个 Vie
SwipeRefresh 在 fragment 中不起作用。我的 xml 代码: 我的fragmnet代码: View drawer = inflater.inflate(R.layout.fra
我正在使用 JSON 在线填充 ListView 。它效果很好......但我想实现 SwipeRefresh 布局的方法,以便在每个 Swipe 用户制作中旧数据都会被新数据替换。 每次 Swipe
我有 fragment A,其中包括一个 SwipeRefresh 和一个 RecycleView。当用户单击 RecycleView 中的项目时,我替换了一个新的 fragment B: mAdap
我正在使用 ViewBinder,到目前为止已成功将其用于 SimpleDateFormat,现在我正在尝试同时获取 Contect 名称而不是数字。 1. 下面的代码显示不会将号码更新为联系人姓名,
我在 ListView 上实现下拉刷新手势,我有这个简单的布局 xml 由于我使用 SwipeRefreshLayout,它给出了 ClassCas
我正在使用 23.1.1 RecyclerView,当滑动刷新开始时,在这种情况下,当我滚动我的 RecyclerView 时,它会崩溃并给我错误 这是我的错误日志, java.lang.In
我是一名优秀的程序员,十分优秀!