我创建了一个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;
}
}