我有一个具有多个视图类型的视图.
onBindViewHolder
仅在getItemViewType
更改值时调用滚动.这会导致我的列表项无法正确更新.
这是一个错误吗?或者我在这里做错了什么.这似乎是新recyclerView
课程中非常奇怪的行为.
这是我的适配器:
package se.davison.smartrecycleradapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.util.SparseIntArray;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
/**
* Created by richard on 10/11/14.
*/
public class SectionAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = SectionAdapter.class.getSimpleName();
private final LayoutInflater inflater;
private final int sectionLayoutId;
private SparseIntArray positionSection;
private LinkedHashMap<AdapterItem, List<AdapterItem>> items = new LinkedHashMap<AdapterItem, List<AdapterItem>>();
private List<Class<? extends AdapterItem>> itemTypes = new ArrayList<Class<? extends …
Run Code Online (Sandbox Code Playgroud) android android-adapter android-support-library recycler-adapter android-recyclerview
我想开发一个电子书阅读器应用程序.有哪些好的库可用于解析.azw,.mobi,.pdf等格式?
我正在尝试将边距更新或动画应用于使用a拖动父视图的子视图ViewDragHelper
.
但是,更新的布局属性不起作用,并且在拖动视图时不会呈现.拖动时会忽略从添加和删除视图到布局动画或布局参数更新的所有内容:
为了说明这个问题,我创建了一个延迟的runnable,它在3秒后更新视图的高度(绿色视图):
spacer.postDelayed(new Runnable() {
@Override
public void run() {
Log.d(TAG,"set layout params!!!!");
ViewGroup.LayoutParams spacerParams = spacer.getLayoutParams();
spacerParams.height = (int) (200+(Math.random()*200));
spacer.setLayoutParams(spacerParams);
}
},3000);
Run Code Online (Sandbox Code Playgroud)
查看此演示屏录制:http: //imgur.com/a/dDiGt
我正在使用动作栏兼容性库.我试图从一个带有openOptionsMenu()函数的按钮打开选项菜单,但它什么也没做.
按下手机上的菜单键时,菜单会照常显示.这有什么不对?
public class ReadActivity extends ActionBarActivity {
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean value;
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.read, menu);
value = super.onCreateOptionsMenu(menu);
if (Helper.SupportsNewApi()) {
getActionBar().hide();
} else {
((View) ((LinearLayout) findViewById(R.id.actionbar_compat))
.getParent()).setVisibility(View.GONE);
}
return value;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
case R.id.menu_search:
// Toast.makeText(this, "Tapped search", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_bookmark:
// selectText();
// setFullScreen(false);
break;
case R.id.menu_day_night_mode:
break;
case R.id.menu_settings:
break;
case R.id.menu_zoom_in:
showOverlay(false);
break;
case …
Run Code Online (Sandbox Code Playgroud) 使用我的ListView时,我有一个非常奇怪的问题.
我的适配器项目中只有一部分在屏幕上的列表视图中呈现,但是当我与列表视图交互时(即尝试滚动它),所有项目都被正确呈现.
只有当我的项目少于屏幕可以显示的项目时,才会出现此fenonemon.看看下面的这些截图.
互动之前:
互动后:
添加项目的活动源代码:
String[] jRests = getResources().getStringArray(R.array.j_restaurants);
String[] lRests = getResources().getStringArray(R.array.l_restaurants);
items = new ArrayList<Object>();
items.add(getString(R.string.campus_j));
for(String item : jRests){
String[] val = item.split(",,,");
items.add(new FoodSectionListItem(new Restaurant(val[0], val[1], val[2], "")));
}
items.add(getString(R.string.campus_l));
for(String item : lRests){
String[] val = item.split(",,,");
items.add(new FoodSectionListItem(new Restaurant(val[0], val[1], val[2], "")));
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
adapter = new BaseSectionAdapter(this, R.layout.list_item_fragment_header);
if(!isTabletView()){
adapter.setSelectedItem(-1);
}
adapter.setItems(items);
Run Code Online (Sandbox Code Playgroud)
适配器代码:
public class BaseSectionAdapter extends AmazingAdapter {
private LayoutInflater inflater;
private int selectedItem = 0;
private List<Object> items;
private List<SectionItem> …
Run Code Online (Sandbox Code Playgroud) 我正在为Android构建一个电子书阅读器.电子书的内容通常分为html文件(epub),其中包含一个或多个章节.
我打算建立一个电子书阅读器,将这些文件的内容分成不同的"页面".问题是要知道一页上有多少文本"适合"并计算正确的页面数量,因为这取决于许多不同的因素,例如:字体大小,字号,段落,图像,分页符,头条新闻等
理想我会让我的文本合理和可选择,因为普通的TextView或EditText是不可能的,我必须使用不可滚动的WebView.
总而言之,我如何"测量"适合我的WebView上一个"页面"的文本数量?或者有更好的方法来解决这个问题吗?我看到Paint类支持measure文本和breakText.
谢谢!
我对windows phone 7 silverlight应用程序中的位图缓存有疑问.
我应该什么时候使用它?在什么控制?我应该位缓存位图缓存的控件的子缓存吗?我不确定它是如何工作的,从你们那里得到一些建议会很好.
/理查德
阅读设计指南.在尝试实施指标时,我遇到了一个小问题:
如上所述,我们应该在按钮元素和文本输入字段的顶部和底部添加4dp边距.但是这些元素已经有了drawables指定的边距,这使得指南无效.
尽管在下面的示例中,填充和边距被指定为0dp,但我们仍然获得了保证金:
我应该指定我自己的按钮drawables,或者我如何解决这个问题?
我正在用 Kotlin 编写后端应用程序。
为了加快速度,我目前依靠服务器上的 RxKotlin 来并行执行 IO 任务,例如数据库调用和 API 调用。代码通常是这样的。
val singleResult1 = Single.fromCallable{
database.get(....)
}.io()
val singleResult2 = Single.fromCallable{
database.update(....)
}.io()
Single.zip(singleResult1, singleResult2){ result1: Result1, result2: Result2 ->
....
}
.flatMap{
//other RX calls
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.blockingGet()
Run Code Online (Sandbox Code Playgroud)
但是,由于不能真正处理多个事件(只是单个事件),Rx 感觉有点混乱,只是添加了一堆样板(如果我想返回一个空值,它也会导致复杂化,有时可能会弄乱堆栈跟踪)
我正在考虑删除 Rx 并使用Executors
(或线程)来代替并行性。这里是否有任何性能方面的考虑?
例如我在想什么:
fun <T> waitAll(tasks: List<Callable<T>>, threadCount: Int = -1): List<T> {
val threads = if (threadCount == -1) tasks.size else threadCount
val executor = Executors.newFixedThreadPool(threads)
val results = executor.invokeAll(tasks).map {
it.get()
}
executor.shutdown()
return …
Run Code Online (Sandbox Code Playgroud) android ×7
java ×2
android-gui ×1
android-menu ×1
c# ×1
facebook ×1
kotlin ×1
parsing ×1
server ×1
silverlight ×1
textview ×1
webview ×1