Android 无法在SwipeFlingAdapterView中显示项目

Android 无法在SwipeFlingAdapterView中显示项目,android,json,android-activity,android-arrayadapter,android-custom-view,Android,Json,Android Activity,Android Arrayadapter,Android Custom View,我使用的是SwipeFlingAdapterView,我从MySQL数据库中获取数据 变量: private ArrayList<String> al; private ArrayAdapter<String> arrayAdapter; private int i; SwipeFlingAdapterView flingContainer; JSONParser jParser = new JSONParser(); ArrayLi

我使用的是
SwipeFlingAdapterView
,我从MySQL数据库中获取数据

变量:

private ArrayList<String> al;
    private ArrayAdapter<String> arrayAdapter;
    private int i;
    SwipeFlingAdapterView flingContainer;


JSONParser jParser = new JSONParser();

    ArrayList<HashMap<String, String>> productsList;

    // url to get all products list
    private static String url_all_products = "http://example.com/items.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";
    private static final String TAG_PRODUCTS = "items";

    private static final String TAG_NAME = "name";


    // products JSONArray
    JSONArray products = null;
私有数组列表al;
专用阵列适配器阵列适配器;
私人互联网i;
SwipeFlingAdapterView flingContainer;
JSONParser jParser=新的JSONParser();
ArrayList productsList;
//获取所有产品列表的url
私有静态字符串url\u所有产品=”http://example.com/items.php";
//JSON节点名称
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串TAG_PRODUCTS=“items”;
私有静态最终字符串标记_NAME=“NAME”;
//产品JSONArray
JSONArray产品=null;
当我使用以下代码时,它将绑定数据:

al.add("php");
al.add("c");
al.add("python");
al.add("java");

// choose your favorite adapter
arrayAdapter = new ArrayAdapter<String>(MainActivity.this,
        R.layout.item, R.id.tv_portal, al);

// set the listener and the adapter
flingContainer.setAdapter(arrayAdapter);
flingContainer
        .setFlingListener(new SwipeFlingAdapterView.onFlingListener() {
            @Override
            public void removeFirstObjectInAdapter() {
                // this is the simplest way to delete an object from the
                // Adapter (/AdapterView)
                Log.d("LIST", "removed object!");
                al.remove(0);
                arrayAdapter.notifyDataSetChanged();
            }

            @Override
            public void onLeftCardExit(Object dataObject) {
                // Do something on the left!
                // You also have access to the original object.
                // If you want to use it just cast it (String)
                // dataObject
                Toast.makeText(MainActivity.this, "Left!",
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRightCardExit(Object dataObject) {
                Toast.makeText(MainActivity.this, "Right!",
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onAdapterAboutToEmpty(int itemsInAdapter) {
                // Ask for more data here
                /*
                 * al.add("XML ".concat(String.valueOf(i)));
                 * arrayAdapter.notifyDataSetChanged(); Log.d("LIST",
                 * "notified"); i++;
                 */
            }

            @Override
            public void onScroll(float scrollProgressPercent) {
                // TODO Auto-generated method stub

            }
        });

// Optionally add an OnItemClickListener
flingContainer
        .setOnItemClickListener(new SwipeFlingAdapterView.OnItemClickListener() {
            @Override
            public void onItemClicked(int itemPosition,
                    Object dataObject) {
                // Toast.make(MainActivity.this, "Clicked!");
            }
        });
al.add(“php”);
al.添加(“c”);
al.添加(“python”);
al.添加(“java”);
//选择您喜欢的适配器
arrayAdapter=新的arrayAdapter(MainActivity.this,
R.layout.item,R.id.tv_门户,al);
//设置侦听器和适配器
flingContainer.setAdapter(阵列适配器);
flingContainer
.setFlingListener(新SwipeFlingAdapterView.onFlingListener(){
@凌驾
public void removeFirstObjectInAdapter(){
//这是从数据库中删除对象的最简单方法
//适配器(/AdapterView)
Log.d(“列表”,“删除对象!”);
al.移除(0);
arrayAdapter.notifyDataSetChanged();
}
@凌驾
public void onLeftCardExit(对象dataObject){
//在左边做点什么!
//您还可以访问原始对象。
//如果您想使用它,只需将其强制转换(字符串)
//数据对象
Toast.makeText(MainActivity.this,“Left!”,
吐司。长度(短)。show();
}
@凌驾
RightCardExit上的公共无效(对象dataObject){
Toast.makeText(MainActivity.this,“Right!”,
吐司。长度(短)。show();
}
@凌驾
dapterabouttoempty上的公共void(int itemsInAdapter){
//在这里询问更多数据
/*
*al.add(“XML.concat(String.valueOf(i)));
*arrayAdapter.notifyDataSetChanged();Log.d(“列表”,
*“通知”);i++;
*/
}
@凌驾
公共无效onScroll(浮动百分比){
//TODO自动生成的方法存根
}
});
//(可选)添加一个McClickListener
flingContainer
.setOnItemClickListener(新的SwipeFlingAdapterView.OnItemClickListener(){
@凌驾
已单击公共项(int itemPosition,
对象(数据对象){
//Toast.make(MainActivity.this,“Clicked!”);
}
});
装载情况良好

但当我使用下面的代码时,即使没有出现错误,也不会绑定数据:

    class LoadAllProducts extends AsyncTask<String, String, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Loading products. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("itemid", "1"));
        // getting JSON string from URL
        JSONObject json = jParser.makeHttpRequest(url_all_items, "GET",
                params);

        // Check your log cat for JSON reponse
        Log.d("All Products: ", json.toString());

        try {
            // Checking for SUCCESS TAG
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {
                // products found
                // Getting Array of Products
                products = json.getJSONArray(TAG_PRODUCTS);

                // looping through All Products
                for (int i = 0; i < products.length(); i++) {

                    JSONObject c = products.getJSONObject(i);

                    // Storing each json item in variable

                    String name = c.getString(TAG_NAME);


                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value

                    map.put(TAG_NAME, name);



                     al.add(name);

                }
            } else {

            }

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

        return null;
    }

    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all products

        pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {

           arrayAdapter = new ArrayAdapter<String>(MainActivity.this,
            R.layout.item, R.id.tv_portal, al);

    // set the listener and the adapter
    flingContainer.setAdapter(arrayAdapter);
                Toast.makeText(getApplicationContext(), "Done",
                        Toast.LENGTH_LONG).show();

            }
        });

    }
}
class LoadAllProducts扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=新建进度对话框(MainActivity.this);
pDialog.setMessage(“正在加载产品。请稍候…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
受保护的字符串doInBackground(字符串…args){
//建筑参数
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“itemid”,“1”));
//从URL获取JSON字符串
JSONObject json=jParser.makeHttpRequest(url\u all\u items,“GET”,
参数);
//检查日志cat中的JSON响应
Log.d(“所有产品:,json.toString());
试一试{
//检查成功标签
int success=json.getInt(TAG_success);
如果(成功==1){
//发现的产品
//获取一系列产品
products=json.getJSONArray(TAG_products);
//在所有产品中循环
对于(int i=0;ivalue
地图放置(标签名称、名称);
加上(姓名);
}
}否则{
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
受保护的void onPostExecute(字符串文件\u url){
//获取所有产品后关闭对话框
pDialog.disclose();
//从后台线程更新UI
runOnUiThread(新的Runnable(){
公开募捐{
arrayAdapter=新的arrayAdapter(MainActivity.this,
R.layout.item,R.id.tv_门户,al);
//设置侦听器和适配器
flingContainer.setAdapter(阵列适配器);
Toast.makeText(getApplicationContext(),“完成”,
Toast.LENGTH_LONG).show();
}
});
}
}
它没有加载数据,但显示toast
done

我正在使用此-
https://github.com/Diolor/Swipecards


我该怎么做呢?

我也面临同样的问题。我是这样解决的。 在这条线之后

flingContainer.setAdapter(阵列适配器)

添加这一行

arrayAdapter.notifyDataSetChanged()