0

私は現在、自分のウェブサイトhttp://loadedgeek.com用の Android アプリケーションを作成しています。これにアクセスすると、それはフォーラムなので、ユーザーがトピックを作成/投稿したり、トピックを読んだり、登録したりできるアプリケーションが必要です。アプリケーションがブラウザを開くことなく、アプリケーションを介してサイト。

ここで、ユーザーが「トピックの表示」をクリックしたときに、データベースを介して Web サイトにトピックを表示するようにしたいので、MainActivity は AllTopicsActivity を呼び出します。問題がある場所です。私はまだ学習者なので、Google 検索を行ってコードを組み合わせていました。このアクティビティにより、ユーザーはトピックを読むだけでなく、トピックを編集できます。

これは main.xml ファイルです

<!--  Sample Dashboard screen with four buttons -->
<!--  Button to view all topics screen -->
<Button android:id="@+id/btnViewTopics"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="View Topics"
    android:layout_marginTop="25dip"/>

<!--  Button to create a new topic screen -->
<Button android:id="@+id/btnCreateTopics"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Add New Topic"
    android:layout_marginTop="25dip"/>

<!-- Button to create a loadedgeek account -->    <Button android:id="@+id/btnCreateAccount"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Create An Account"
    android:layout_marginTop="25dip"/>
      <!-- Button To Check For Updates -->    <Button android:id="@+id/btnCheckForUpdate"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Check For Application Update"
    android:layout_marginTop="25dip"/>
      <!-- Button To View Application Information -->     <Button android:id="@+id/btnViewAppDetails"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="About The Application"
    android:layout_marginTop="25dip"/>   </LinearLayout>

これは、ユーザーが [トピックの表示] ボタンをクリックしたときに AllTopicsActivity を呼び出す MainActivity です。

パッケージcom.loadedgeek.app; android.app.Activity をインポートします。android.content.Intent をインポートします。android.os.Bundle をインポートします。android.view.View をインポートします。android.widget.Button をインポートします。public class MainActivity extends Activity{

Button btnViewTopics;
Button btnNewTopic;   Button btnCreateAccount;    Button btnCheckForUpdates;  Button btnViewAppDetails

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Buttons
    btnViewTopics = (Button) findViewById(R.id.btnViewTopics);
    btnNewTopic = (Button) findViewById(R.id.btnCreateTopic);         btnCreateAccount = (Button) findViewById(R.id.btnCreateAccount);
  btnCheckForUpdates = (Button) findViewById(R.id.btnCheckForUpdates);
  btnViewAppDetails = (Button) findViewById(R.id.btnViewAppDetails);

    // view topics click event
    btnViewTopics.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching All topics Activity
            Intent i = new Intent(getApplicationContext(), AllTopicsActivity.class);
            startActivity(i);

        }
    });

    // new topic click event
    btnNewTopic.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching create new topic activity
            Intent i = new Intent(getApplicationContext(), NewTopicActivity.class);
            startActivity(i);

        }
    });
          // create account click event
    btnCreateAccount.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching All topics Activity
            Intent i = new Intent(getApplicationContext(), CreateAccount.class);
            startActivity(i);

        }
    });
          // check for updates click event
    btnCheckForUpdates.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching All topics Activity
            Intent i = new Intent(getApplicationContext(), CheckUpdates.class);
            startActivity(i);

        }
    });
          // view app click event
    btnViewAppDetails.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            // Launching All topics Activity
            Intent i = new Intent(getApplicationContext(), AppDetails.class);
            startActivity(i);

        }
    });
} }

今、これは私が問題を抱えている AllTopicActivity です

パッケージcom.loadedgeek.official; import java.util.ArrayList; java.util.HashMap をインポートします。java.util.List をインポートします。org.apache.http.NameValuePair をインポートします。org.json.JSONArray をインポートします。org.json.JSONException をインポートします。org.json.JSONObject をインポートします。android.app.ListActivity をインポートします。android.app.ProgressDialog をインポートします。android.content.Intent をインポートします。android.os.AsyncTask をインポートします。android.os.Bundle をインポートします。android.util.Log をインポートします。android.view.View をインポートします。android.widget.AdapterView をインポートします。android.widget.AdapterView.OnItemClickListener; をインポートします。android.widget.ListAdapter をインポートします。android.widget.ListView をインポートします。android.widget.SimpleAdapter をインポートします。android.widget.TextView をインポートします。public class AllTopicsActivity extends ListActivity {

// Progress Dialog
private ProgressDialog pDialog;

// Creating JSON Parser object
JSONParser jParser = new JSONParser();

ArrayList<HashMap<String, String>> topicsList;

// url to get all products list
private static String url_all_topics = "http://api.loadedgeek.com/android_connect/get_all_topics.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_TOPIC = "topic";
private static final String TAG_ID = "id";
private static final String TAG_SUBJECT = "subject";

// products JSONArray
JSONArray products = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.topics);

    // Hashmap for ListView
    topicsList = new ArrayList<HashMap<String, String>>();

    // Loading products in Background Thread
    new LoadAllTopics().execute();

    // Get listview
    ListView lv = getListView();

    // on seleting single product
    // launching Edit topic
    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            // getting values from selected ListItem
            String id = ((TextView) view.findViewById(R.id.id)).getText()
                    .toString();

            // Starting new intent
            Intent in = new Intent(getApplicationContext(),
                    EditTopicActivity.class);
            // sending pid to next activity
            in.putExtra(TAG_ID, id);

            // starting new activity and expecting some response back
            startActivityForResult(in, 100);
        }
    });

}

ユーザーがトピックをクリックすると、テキストビューで読むのではなく、EditTopicActivity が起動することがわかります:(

トピックはリスト ビューで表示されますが、ユーザーが任意のトピックをクリックすると表示され、不要なトピックをユーザーが編集できるようになります。EDit コードを削除しようとしましたが、プロジェクト全体に散らばってしまうので、今すぐ必要です助けてください、アクティビティでトピックを表示し、ユーザーが編集したり削除したりせずにテキストビューで詳細を表示したい..ありがとう

これは EditTopicActivity であり、避けて削除したいトピックを削除および更新するアクティビティが含まれています。また、edit_topic.xml ファイルも表示します。活動ベロ

public class EditTopicActivity extends Activity {

EditText txtSubject;
EditText txtPoster;
EditText txtMessage;
EditText txtCreatedAt;
Button btnSave;
Button btnDelete;

String pid;

// Progress Dialog
private ProgressDialog pDialog;

// JSON parser class
JSONParser jsonParser = new JSONParser();

// single product url
private static final String url_topic_detials = "http://api.loadedgeek.com/android_connect/get_topic_details.php";

// url to update product
private static final String url_update_topic = "http://api.loadedgeek.com/android_connect/update_topic.php";

// url to delete product
private static final String url_delete_topic = "http://api.loadedgeek.com/android_connect/delete_topic.php";

// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_TOPIC = "topic";
private static final String TAG_ID = "id";
private static final String TAG_SUBJECT = "subject";
private static final String TAG_POSTER = "poster";
private static final String TAG_MESSAGE = "message";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit_topic);

    // save button
    btnSave = (Button) findViewById(R.id.btnSave);
    btnDelete = (Button) findViewById(R.id.btnDelete);

    // getting product details from intent
    Intent i = getIntent();

    // getting product id (pid) from intent
    pid = i.getStringExtra(TAG_ID);

    // Getting complete product details in background thread
    new GetProductDetails().execute();

    // save button click event
    btnSave.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // starting background task to update product
            new SaveTopicDetails().execute();
        }
    });

    // Delete button click event
    btnDelete.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // deleting product in background thread
            new DeleteTopic().execute();
        }
    });

}

/**
 * Background Async Task to Get complete product details
 * */
class GetProductDetails extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(EditTopicActivity.this);
        pDialog.setMessage("Loading Topic details. Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    /**
     * Getting product details in background thread
     * */
    protected String doInBackground(String... params) {

        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                // Check for success tag
                int success;
                try {
                    // Building Parameters
                    List<NameValuePair> params = new ArrayList<NameValuePair>();
                    params.add(new BasicNameValuePair("pid", pid));

                    // getting product details by making HTTP request
                    // Note that product details url will use GET request
                    JSONObject json = jsonParser.makeHttpRequest(
                            url_topic_detials, "GET", params);

                    // check your log for json response
                    Log.d("Single Topic Details", json.toString());

                    // json success tag
                    success = json.getInt(TAG_SUCCESS);
                    if (success == 1) {
                        // successfully received product details
                        JSONArray topicsObj = json
                                .getJSONArray(TAG_TOPICS); // JSON Array

                        // get first product object from JSON Array
                        JSONObject topics = topicsObj.getJSONObject(0);

                        // product with this pid found
                        // Edit Text
                        txtSubject = (EditText) findViewById(R.id.inputSubject);
                        txtPoster = (EditText) findViewById(R.id.inputPoster);
                        txtMessage = (EditText) findViewById(R.id.inputMessage);

                        // display product data in EditText
                        txtSubject.setText(topics.getString(TAG_SUBJECT));
                        txtPoster.setText(topics.getString(TAG_POSTER));
                        txtMessage.setText(topics.getString(TAG_MESSAGE));

                    }else{
                        // product with pid not found
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once got all details
        pDialog.dismiss();
    }
}

/**
 * Background Async Task to  Save product Details
 * */
class SaveTopicDetails extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(EditTopicActivity.this);
        pDialog.setMessage("Saving Topic ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    /**
     * Saving product
     * */
    protected String doInBackground(String... args) {

        // getting updated data from EditTexts
        String name = txtName.getText().toString();
        String price = txtPrice.getText().toString();
        String description = txtDesc.getText().toString();

        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair(TAG_PID, pid));
        params.add(new BasicNameValuePair(TAG_NAME, name));
        params.add(new BasicNameValuePair(TAG_PRICE, price));
        params.add(new BasicNameValuePair(TAG_DESCRIPTION, description));

        // sending modified data through http request
        // Notice that update product url accepts POST method
        JSONObject json = jsonParser.makeHttpRequest(url_update_product,
                "POST", params);

        // check json success tag
        try {
            int success = json.getInt(TAG_SUCCESS);

            if (success == 1) {
                // successfully updated
                Intent i = getIntent();
                // send result code 100 to notify about product update
                setResult(100, i);
                finish();
            } else {
                // failed to update product
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product uupdated
        pDialog.dismiss();
    }
}

/*****************************************************************
 * Background Async Task to Delete Product
 * */
class DeleteProduct extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(EditTopicActivity.this);
        pDialog.setMessage("Deleting Topic...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    /**
     * Deleting product
     * */
    protected String doInBackground(String... args) {

        // Check for success tag
        int success;
        try {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("id", id));

            // getting product details by making HTTP request
            JSONObject json = jsonParser.makeHttpRequest(
                    url_delete_product, "POST", params);

            // check your log for json response
            Log.d("Delete Topic", json.toString());

            // json success tag
            success = json.getInt(TAG_SUCCESS);
            if (success == 1) {
                // product successfully deleted
                // notify previous activity by sending code 100
                Intent i = getIntent();
                // send result code 100 to notify about product deletion
                setResult(100, i);
                finish();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    /**
     * After completing background task Dismiss the progress dialog
     * **/
    protected void onPostExecute(String file_url) {
        // dismiss the dialog once product deleted
        pDialog.dismiss();

    }

} }

悲しいかな、edit_topic ファイル

<!-- Input Name -->
<EditText android:id="@+id/inputSubject"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dip"
    android:layout_marginBottom="15dip"
    android:singleLine="true"/>

<!-- Price Label -->
<TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Your Name"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:paddingTop="10dip"
    android:textSize="17dip"/>

<!-- Input poster name -->
<EditText android:id="@+id/inputPoster"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dip"
    android:layout_marginBottom="15dip"
    android:singleLine="true"/>

<!-- Description Label -->
<TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Topic Message"
    android:paddingLeft="10dip"
    android:paddingRight="10dip"
    android:paddingTop="10dip"
    android:textSize="17dip"/>

<!-- Input description -->
<EditText android:id="@+id/inputMessage"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dip"
    android:layout_marginBottom="15dip"
    android:lines="4"
    android:gravity="top"/>

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <!-- Button Csave topic -->
<Button android:id="@+id/btnSave"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Save Changes"
    android:layout_weight="1"/>

<!-- Button Create topic -->
<Button android:id="@+id/btnDelete"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Delete"
    android:layout_weight="1"/>
</LinearLayout>   </LinearLayout>
4

0 に答える 0