从mysql数据库到新活动的putExtra无法运行Android

从mysql数据库到新活动的putExtra无法运行Android,android,mysql,database,sqlite,Android,Mysql,Database,Sqlite,我对这个代码有问题 此活动(收藏夹)有一个包含许多项的listView,每个项都有一个从sqlite数据库加载的textview 所有项目都可以单击,当您单击一个项目时,它会将该项目中的textView与mysql数据库进行比较 如果mysql数据库具有该值,我将其和其他数据库值发送到一个新活动(标题、文本和图像) 但问题是,当您单击一个项目时,新活动将启动,但它不会发送所有额外值(只有标题通过)。但是,当您使用箭头返回并再次单击同一项目时,它将获得新活动的值 我怎样才能解决这个问题?我是否可以

我对这个代码有问题

此活动(收藏夹)有一个包含许多项的listView,每个项都有一个从sqlite数据库加载的textview

所有项目都可以单击,当您单击一个项目时,它会将该项目中的textView与mysql数据库进行比较

如果mysql数据库具有该值,我将其和其他数据库值发送到一个新活动(标题、文本和图像)

但问题是,当您单击一个项目时,新活动将启动,但它不会发送所有额外值(只有标题通过)。但是,当您使用箭头返回并再次单击同一项目时,它将获得新活动的值

我怎样才能解决这个问题?我是否可以先从mysql数据库加载数据,并在准备好后启动新活动?有什么想法吗?如果有,请用一些代码示例进行解释

Favorite.java

public class Favorite extends ActionBarActivity {

private FavoriteListAdapter adapter;

public final static String EXTRA_TEXT = "xxx.xxx.xxx.TEXT";
public final static String EXTRA_TITLE = "xxx.xxx.xxx.TITLE";
public final static String EXTRA_IMAGE = "xxx.xxx.xxx.IMAGE";

public String db_image;
String listTitle;

MySQLiteHelper db;
ListView favoriteListView;

TextView title;
TextView text;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favorite);

    text = (TextView) findViewById(R.id.text);
    title = (TextView) findViewById(R.id.title);

    text.setVisibility(View.INVISIBLE);
    title.setVisibility(View.INVISIBLE);

    setupListViewAdapter();

    favoriteListView
            .setOnItemClickListener(new AdapterView.OnItemClickListener() {

                @Override
                public void onItemClick(AdapterView<?> av, View arg1,
                        int index, long arg3) {

                    new task().execute();

                    listTitle = av.getItemAtPosition(index).toString();

                    title.setText(listTitle);

                    Intent toNewActivity = new Intent(Favorite.this,
                            NewActivity.class);

                    TextView textView = (TextView) findViewById(R.id.text);
                    String text = textView.getText().toString();
                    toNewActivity.putExtra(EXTRA_TEXT, text);

                    TextView titleView = (TextView) findViewById(R.id.title);
                    String title = titleView.getText()
                            .toString();
                    toNewActivity.putExtra(EXTRA_TITLE, title);
                    toNewActivity.putExtra(EXTRA_IMAGE, db_image);

                    startActivity(toNewActivity);
                }

            });

}

private void setupListViewAdapter() {

    db = new MySQLiteHelper(this);
    adapter = new FavoriteListAdapter(Favorite.this, R.layout.list_view,
            db.getAllXXX());

    favoriteListView = (ListView) findViewById(R.id.favorite_list);
    favoriteListView.setAdapter(adapter);
}

class task extends AsyncTask<String, String, Void> {
    private ProgressDialog progressDialog = new ProgressDialog(
            Favorite.this);
    InputStream is = null;
    String result = "";

    protected void onPreExecute() {
        progressDialog.setMessage("Loading...");
        progressDialog.show();
        progressDialog.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface arg0) {
                task.this.cancel(true);
            }
        });
    }

    @Override
    protected Void doInBackground(String... params) {
        String url_select = "http://xxx.xxx/db.php";

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url_select);

        ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();

        try {
            httpPost.setEntity(new UrlEncodedFormEntity(param));

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            is = httpEntity.getContent();

        } catch (Exception e) {

            Log.e("log_tag", "Error in http connection " + e.toString());
        }
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = "";
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();

        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }

        return null;

    }

    protected void onPostExecute(Void v) {

        try {
            JSONArray Jarray = new JSONArray(result);

            for (int i = 0; i < Jarray.length(); i++) {
                JSONObject Jasonobject = null;
                // text_1 = (TextView)findViewById(R.id.txt1);
                Jasonobject = Jarray.getJSONObject(i);

                String db_text = "";

                if (title.getText().toString()
                        .equalsIgnoreCase(Jasonobject.getString("title"))) {
                    db_text = Jasonobject.getString("text");
                    text.setText(db_text);

                    db_image = Jasonobject.getString("image");

                    title.setVisibility(View.INVISIBLE);

                    break;
                }

            }
            this.progressDialog.dismiss();

        } catch (Exception e) {
            // TODO: handle exception
            Log.e("log_tag", "Error parsing data " + e.toString());
        }
    }
}
公共类收藏夹扩展了ActionBarActivity{
私有收藏夹列表适配器;
公共最终静态字符串EXTRA_TEXT=“xxx.xxx.xxx.TEXT”;
公共最终静态字符串EXTRA_TITLE=“xxx.xxx.xxx.TITLE”;
公共最终静态字符串EXTRA_IMAGE=“xxx.xxx.xxx.IMAGE”;
公共字符串db_图像;
字符串列表标题;
MySQLiteHelper数据库;
ListView收藏夹ListView;
文本视图标题;
文本查看文本;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite);
text=(TextView)findViewById(R.id.text);
title=(TextView)findViewById(R.id.title);
text.setVisibility(View.INVISIBLE);
标题.设置可见性(视图.不可见);
setupListViewAdapter();
收藏夹列表视图
.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共链接(AdapterView av,视图arg1,
整数索引,长arg3){
新任务().execute();
listTitle=av.getItemAtPosition(index.toString();
title.setText(listTitle);
Intent toNewActivity=新的Intent(Favorite.this,
新活动(课堂);
TextView TextView=(TextView)findViewById(R.id.text);
String text=textView.getText().toString();
音调活动。putExtra(额外文本,文本);
TextView titleView=(TextView)findViewById(R.id.title);
String title=titleView.getText()
.toString();
音调活动。putExtra(额外标题,标题);
色调活动。putExtra(额外图像,分贝图像);
起始触觉(音调活动);
}
});
}
私有void setupListViewAdapter(){
db=新的MySQLiteHelper(此);
adapter=新的FavoriteListAdapter(Favorite.this,R.layout.list\u视图,
db.getAllXXX());
favoriteListView=(ListView)findViewById(R.id.favorite\u列表);
setAdapter(适配器);
}
类任务扩展了异步任务{
private ProgressDialog ProgressDialog=新建ProgressDialog(
最喜欢的。这个);
InputStream=null;
字符串结果=”;
受保护的void onPreExecute(){
progressDialog.setMessage(“加载…”);
progressDialog.show();
progressDialog.setOnCancelListener(新的OnCancelListener(){
@凌驾
public void onCancel(对话框接口arg0){
task.this.cancel(true);
}
});
}
@凌驾
受保护的Void doInBackground(字符串…参数){
字符串url_select=”http://xxx.xxx/db.php";
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(url\u选择);
ArrayList param=新的ArrayList();
试一试{
setEntity(新的UrlEncodedFormEntity(参数));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpResponse.getEntity();
is=httpEntity.getContent();
}捕获(例外e){
e(“Log_标记”,“http连接错误”+e.toString());
}
试一试{
BufferedReader br=新的BufferedReader(新的InputStreamReader(
is,“iso-8859-1”),8);
StringBuilder sb=新的StringBuilder();
字符串行=”;
而((line=br.readLine())!=null){
sb.追加(第+行“\n”);
}
is.close();
结果=sb.toString();
}捕获(例外e){
Log.e(“Log_标记”,“错误转换结果”+e.toString());
}
返回null;
}
受保护的void onPostExecute(void v){
试一试{
JSONArray Jarray=新JSONArray(结果);
for(int i=0;i
FavoriteListAdapter.java

public class FavoriteListAdapter extends ArrayAdapter<DBLite> {

TextView title;

protected static final String LOG_TAG = FavoriteListAdapter.class
        .getSimpleName();

private List<DBLite> items;
private int layoutResourceId;
private Context context;

public FavoriteListAdapter(Context context, int layoutResourceId,
        List<DBLite> items) {
    super(context, layoutResourceId, items);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.items = items;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    favoriteListHolder holder = null;

    LayoutInflater inflater = ((Activity) context).getLayoutInflater();
    row = inflater.inflate(layoutResourceId, parent, false);

    holder = new favoriteListHolder();
    holder.favoriteList = items.get(position);

    holder.title = (TextView) row.findViewById(R.id.txt);
    holder.title.setTag(holder.favoriteList);

    row.setTag(holder);

    setupItem(holder);
    return row;
}

private void setupItem(favoriteListHolder holder) {
    holder.title.setText(holder.favoriteList.getTitle());

}

public static class favoriteListHolder {
    DBLite favoriteList;
    TextView title;
}
}
公共类FavoriteListAdapter扩展了ArrayAdapter{
文本视图标题;
受保护的静态最终字符串LOG_TAG=FavoriteListAdapter.class
.getSimpleName();
私人名单