我遇到的问题是这个.我需要向服务器执行几个请求.每个下一个请求都取决于前一个请求的结果.它们看起来像这样(缩写):
Observable<FileUploadResponse> obsFile = api.uploadFile();
Observable<TokenCreateResponse> obsCreateToken = api.createToken();
Observable<PaymentResponse> obsPayment = api.submitOrder();
Run Code Online (Sandbox Code Playgroud)
我使用flatMap创建了一个observable,它返回PaymentResponse对象,如果不满足某些要求,则发出onError().这工作正常,我在一次通话中完成了所有请求.
问题是我无法在这些请求之间更新UI.使用当前设置,我会在请求开始时显示加载,并在所有请求完成时隐藏它.有没有办法在这些请求之间更新UI?
我想要的是:1.文件上传 - 在UI上写一条消息.2.创建令牌 - 在UI上编写消息.3.提交订单 - 在UI上写一条消息.4.完成所有操作后,隐藏进度对话框.
我的理解是在每个API调用完成后使用onNext()发出一些Observable,然后在完成所有API调用后调用onComplete().但是我该怎么做?
我需要编写一个泛光填充算法来为黑色边框内的图像的像素着色.我根据SO上的一些帖子写了以下内容:
private Queue<Point> queue = new LinkedList<Point>();
private int pickedColorInt = 0;
private void floodFill(Pixmap pixmap, int x, int y){
//set to true for fields that have been checked
boolean[][] painted = new boolean[pixmap.getWidth()][pixmap.getHeight()];
//skip black pixels when coloring
int blackColor = Color.rgba8888(Color.BLACK);
queue.clear();
queue.add(new Point(x, y));
while(!queue.isEmpty()){
Point temp = queue.remove();
int temp_x = temp.getX();
int temp_y = temp.getY();
//only do stuff if point is within pixmap's bounds
if(temp_x >= 0 && temp_x < pixmap.getWidth() && temp_y >= 0 …Run Code Online (Sandbox Code Playgroud) 这是我最近遇到的问题.有时在我使用主页按钮退出应用程序并让它在后台闲置一段时间后,我会得到getActivity()的空指针.所以我只是想知道我是否设置了异步任务和听众错误,或者问题可能在其他地方.我的一般程序如下:
public class MyAsyncTask extends AsyncTask<Void, Void, List<SomeObject>>{
private Context ctx;
private AsyncListener listener;
public MyAsyncTask(Context ctx){
//set Context, etc
}
...
onPostExecute(List<SomeObject> result){
super.onPostExecute(result);
if(result!=null){
listener.onAvailable(result);
} else {
listener.onUnavailable();
}
}
public interface AsyncListener{
void onAvailable(List<SomeObject> result);
void onUnavailable();
}
public void setAsyncListener(AsyncListener listener){
this.listener = listener;
}
}
Run Code Online (Sandbox Code Playgroud)
分段:
public class MyFragment extends Fragment implements AsyncListener {
private AsyncTask task;
private List<SomeObject> data;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method …Run Code Online (Sandbox Code Playgroud) 互联网上关于这些新布局的例子并不多,而且那些都基于相同的基本方法的少数例子。如果我的应用程序中没有合适的工具栏,但仍想使用新材料设计布局的酷功能,该怎么办?
我一直在尝试的一件事是在具有视差滚动效果的 CoordinatorLayout 中使用 MapView 和 RecyclerView。它工作得很好,但有一个问题。如果我的适配器数量很少,则 RecyclerView 不会保留在屏幕底部。这里有一些图片可以更好地描述问题。
初始画面:
RecyclerView 在 MapView 上滚动,下方留有空白:

有没有办法让 RecyclerView 保持在底部?
我的 xml 看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll|enterAlways">
<com.google.android.gms.maps.MapView
android:id="@+id/tts_main_map"
android:layout_width="match_parent"
android:layout_height="250dp"
app:layout_collapseMode="parallax" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) android android-coordinatorlayout android-collapsingtoolbarlayout android-appbarlayout
好的,我一直在尝试优化我的照片库几天(这是我的第一个Android项目).所有照片都是通过网页加载的.我已经开始使用Universal Image Loader,但我仍然不满意结果.
这是我的班级:
public class Galerija extends Activity {
ArrayList<RSSItem> lista = new ArrayList<RSSItem>();
ArrayList<String> lst_slika = new ArrayList<String>();
RSSItem tempItem = new RSSItem();
ImageAdapter adapter;
ImageLoader imageLoader;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_galerija);
try
{
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader myReader = sp.getXMLReader();
URL url = new URL("http://erdut.gausstesting.info/generateXML/galerija.php");
XMLHandler myXMLHandler = new XMLHandler();
myReader.setContentHandler(myXMLHandler);
myReader.parse(new InputSource(url.openStream()));
lista = myXMLHandler.getRss_lista();
lst_slika = lista.get(0).getImages();
} catch (Exception e) {
System.out.println(e);
}
adapter = new …Run Code Online (Sandbox Code Playgroud) 我有一个奇怪的问题.这是代码:
public class TaxiDetails extends Activity{
ArrayList<Bus> listBus = new ArrayList<Bus>();
ArrayList<Taxi> listTaxi = new ArrayList<Taxi>();
TextView detalji, title;
ImageView backBtn;
String strType;
StringBuilder builder = new StringBuilder();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.numbers_details);
detalji = (TextView) findViewById(R.id.txtNumbDetails);
title = (TextView) findViewById(R.id.txtTitleNumbers);
detalji.setTypeface(Typeface.DEFAULT_BOLD);
Typeface TF = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Black.ttf");
backBtn = (ImageView) findViewById(R.id.backBtn);
title.setTypeface(TF);
Intent in = getIntent();
strType = in.getStringExtra("type");
if (strType.equals("TAXI")){
listTaxi = (ArrayList<Taxi>) in.getSerializableExtra("TAXI");
title.setText("Taxi");
} else if (strType.equals("BUS")){
listBus = (ArrayList<Bus>) in.getSerializableExtra("BUS");
title.setText("BUS");
}
if …Run Code Online (Sandbox Code Playgroud) android ×5
java ×4
android-collapsingtoolbarlayout ×1
flood-fill ×1
for-loop ×1
libgdx ×1
rx-java ×1