小编Tom*_*cic的帖子

RxJava - 链接请求和更新UI

我遇到的问题是这个.我需要向服务器执行几个请求.每个下一个请求都取决于前一个请求的结果.它们看起来像这样(缩写):

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().但是我该怎么做?

android rx-java

8
推荐指数
1
解决办法
2654
查看次数

Java Flood Fill问题

我需要编写一个泛光填充算法来为黑色边框内的图像的像素着色.我根据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)

java image-processing flood-fill libgdx

6
推荐指数
1
解决办法
510
查看次数

片段,AsyncTask和监听器

这是我最近遇到的问题.有时在我使用主页按钮退出应用程序并让它在后台闲置一段时间后,我会得到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)

java android android-asynctask android-fragments

5
推荐指数
1
解决办法
431
查看次数

在没有工具栏的情况下使用 AppBarLayout 和 CollapsingToolbarLayout

互联网上关于这些新布局的例子并不多,而且那些都基于相同的基本方法的少数例子。如果我的应用程序中没有合适的工具栏,但仍想使用新材料设计布局的酷功能,该怎么办?

我一直在尝试的一件事是在具有视差滚动效果的 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

5
推荐指数
1
解决办法
2893
查看次数

正确使用Universal Image Loader

好的,我一直在尝试优化我的照片库几天(这是我的第一个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)

java android photo-gallery universal-image-loader

3
推荐指数
1
解决办法
1万
查看次数

Stringbuilder无法正常工作

我有一个奇怪的问题.这是代码:

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)

java stringbuilder android for-loop

2
推荐指数
1
解决办法
1374
查看次数