使用OnTouchListener的AsyncTask类,滑动不起作用,为什么?

时间:2016-11-22 09:56:02

标签: android android-asynctask relativelayout ontouchlistener

我创建了一个AsyncTask类并实现了OnTouchListener。所以我用PHP从MySQL获取了我的所有信息,这是有效的。现在我想在RelativeLayout中添加一个滑动方法,但它不起作用,为什么?

这是我的代码,你可以看到我添加了onTouch函数,GestureListenen等。

public class deelnemerDataParser extends AsyncTask<Void, Void, Integer> implements OnTouchListener {

Context c;
String jsonData;
GifTextView fl;
LinearLayout rl;

LayoutInflater inflater;

//voor swipen
GestureDetector gestureDetector;

//deelnemer
ArrayList<deelnemerInfo> deelnemerGegevens = new ArrayList<>();
ArrayList<deelnemerIDAlleDeelnemers> alleDeelnemersID = new ArrayList<>();

public deelnemerDataParser (Context c, String jsonData, LinearLayout rl, GifTextView fl) {
    this.c = c;
    this.jsonData = jsonData;
    this.rl = rl;
    this.fl = fl;

    gestureDetector = new GestureDetector(c, new GestureListener());
    inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
protected void onPreExecute() {
    super.onPreExecute();

    new removeDialog(fl, "test", c).execute();
}

@Override
protected Integer doInBackground(Void... params) {
    return this.parseData();
}

@Override
protected void onPostExecute(Integer result) {
    super.onPostExecute(result);

    fl.setVisibility(View.GONE);

    if(result == 0)
    {
        //Toast.makeText(c,"Unable To Parse",Toast.LENGTH_SHORT).show();
    }
    else {
        //Toast.makeText(c,"Yes",Toast.LENGTH_SHORT).show();
        //view van modeldeelnemer
        View informatie = inflater.inflate(R.layout.modeldeelnemer, null);

        //alle textviews
        TextView titel = (TextView) informatie.findViewById(R.id.titel);

        //value geven aan textviews
        titel.setText(deelnemerGegevens.get(0).getTitel());

        rl.addView(informatie);
    }
}

private int parseData()
{
    try
    {
        //deelnemer array
        JSONObject jsonDeelnemer = new JSONObject(jsonData);
        JSONArray jArrayDeelnemer = jsonDeelnemer.getJSONArray("deelnemerGegevens");

        //array leegmaken
        deelnemerGegevens.clear();

        deelnemerInfo deelnemer;

        for(int i = 0; i < jArrayDeelnemer.length(); i++)
        {
            JSONObject json_data = jArrayDeelnemer.getJSONObject(i);

            //class alleDeelnemers
            deelnemer = new deelnemerInfo();

            //alle deelnemers
            int ID = json_data.getInt("ID");
            String titel = json_data.getString("titel");

            deelnemer.setID(ID);
            deelnemer.setTitel(titel);

            //toevoegen in de class
            deelnemerGegevens.add(deelnemer);
        }

        //Alle ID's van de deelnemers
        JSONObject jsonAlleDeelnemersID = new JSONObject(jsonData);
        JSONArray jArrayjsonAlleDeelnemersID = jsonAlleDeelnemersID.getJSONArray("alleDeelnemers");

        //array leegmaken
        alleDeelnemersID.clear();

        //voor de class gegevensGekozenOptocht
        deelnemerIDAlleDeelnemers alledeelnemersid;

        for (int i = 0; i < jArrayjsonAlleDeelnemersID.length(); i++){

            JSONObject json_data = jArrayjsonAlleDeelnemersID.getJSONObject(i);

            //class alleDeelnemers
            alledeelnemersid = new deelnemerIDAlleDeelnemers();

            //informatie optocht
            int ID = json_data.getInt("ID");

            alledeelnemersid.setID(ID);

            alleDeelnemersID.add(alledeelnemersid);
        }

        return 1;

    } catch (JSONException e) {
        e.printStackTrace();
    }

    return 0;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends SimpleOnGestureListener {

    private static final int SWIPE_THRESHOLD = 100;
    private static final int SWIPE_VELOCITY_THRESHOLD = 100;

    @Override
    public boolean onDown(MotionEvent e) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        boolean result = false;
        try {
            float diffY = e2.getY() - e1.getY();
            float diffX = e2.getX() - e1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                }
                result = true;
            }
            else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                if (diffY > 0) {
                    onSwipeBottom();
                } else {
                    onSwipeTop();
                }
            }
            result = true;

        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}

public void onSwipeTop() {
    Toast.makeText(c, "top", Toast.LENGTH_SHORT).show();
}

public void onSwipeRight() {
    Toast.makeText(c, "right", Toast.LENGTH_SHORT).show();
}

public void onSwipeLeft() {
    Toast.makeText(c, "left", Toast.LENGTH_SHORT).show();
}

public void onSwipeBottom() {
    Toast.makeText(c, "bottom", Toast.LENGTH_SHORT).show();
}

public LinearLayout getRl() {
    rl.setOnTouchListener(new deelnemerDataParser(c, jsonData, rl, fl) {
        public void onSwipeTop() {
            onSwipeTop();
        }

        public void onSwipeRight() {
            onSwipeRight();
        }

        public void onSwipeLeft() {
            onSwipeLeft();
        }

        public void onSwipeBottom() {
            onSwipeBottom();
        }
    });

    return rl;
    }
}

0 个答案:

没有答案