【问题标题】:Different activities on button click of different list view items不同列表视图项的按钮单击时的不同活动
【发布时间】:2016-02-13 09:41:55
【问题描述】:

我有一个包含列表视图的应用程序。单击 listview 项目时,它会打开一个包含 textview 和 Burton 的新活动。

Here 是我的列表视图的图像。

现在,如果我按下列表视图项目 1 的活动内的按钮,我希望它打开活动 1,如果我按下列表视图项目 2 的活动内的按钮,我希望它打开活动 2,依此类推“n”按钮点击我想打开“n”个活动。这可能吗?

主要活动.java

public class MainActivity extends Activity {
// Declare Variables
ListView listview;
List<ParseObject> ob;
ProgressDialog mProgressDialog;
ArrayAdapter<String> adapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from listview_main.xml
    setContentView(R.layout.listview_main);
    // Execute RemoteDataTask AsyncTask
    new RemoteDataTask().execute();
}

// RemoteDataTask AsyncTask
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        // Create a progressdialog
        mProgressDialog = new ProgressDialog(MainActivity.this);
        // Set progressdialog title
        mProgressDialog.setTitle("Parse.com Simple ListView Tutorial");
        // Set progressdialog message
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        // Show progressdialog
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        // Locate the class table named "Country" in Parse.com
        ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
            "Country");
        query.orderByDescending("_created_at");
        try {
            ob = query.find();
        } catch (ParseException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        // Locate the listview in listview_main.xml
        listview = (ListView) findViewById(R.id.listview);
        // Pass the results into an ArrayAdapter
        adapter = new ArrayAdapter<String>(MainActivity.this,
                                           R.layout.listview_item);
        // Retrieve object "name" from Parse.com database
        for (ParseObject country : ob) {
            adapter.add((String) country.get("name"));
        }
        // Binds the Adapter to the ListView
        listview.setAdapter(adapter);
        // Close the progressdialog
        mProgressDialog.dismiss();
        // Capture button clicks on ListView items
        listview.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    // Send single item click data to SingleItemView Class
                    Intent i = new Intent(MainActivity.this,
                                          SingleItemView.class);
                    // Pass data "name" followed by the position
                    i.putExtra("name", ob.get(position).getString("name")
                               .toString());
                    // Open SingleItemView.java Activity
                    startActivity(i);
                }
            });
    }
    }
}

单项视图。 Java

public class SingleItemView extends Activity {
// Declare Variables
TextView txtname;
String name;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from singleitemview.xml
    setContentView(R.layout.singleitemview);

    // Retrieve data from MainActivity on item click event
    Intent i = getIntent();

    // Get the name
    name = i.getStringExtra("name");

    // Locate the TextView in singleitemview.xml
    txtname = (TextView) findViewById(R.id.name);

    // Load the text into the TextView
    txtname.setText(name);

}
}

【问题讨论】:

  • 好的。你的代码在哪里???
  • @IntelliJAmiya 我发布了我的代码,请看一下
  • 你要打开n个SingleItemView的实例吗?或 n 个不同的活动,例如 SingleItemView_1、...、SingleItemView_n
  • n 个不同的活动,例如 singleitemview

标签: android android-activity android-listview


【解决方案1】:

您所问的,根据该 listView 设置,并且您想在每个项目上打开不同的活动,如预定义的那样,您在第一个项目上单击 Activiy1,在第二个项目上单击 2,依此类推。

您可以使用 listView.setOnItemClickListener 来做到这一点。

ListView list = (ListView) findViewById(R.id.listViewXML_ID);
list.setOnItemClickListener(new OnItemClickListener() {


        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch(position){
            case 0:
                //Toast.makeText(getApplicationContext(), (String)parent.getItemAtPosition(position), Toast.LENGTH_LONG).show();
                Intent i = new Intent(MainActivity.this,Activity1.class);
                startActivity(i);
                break;
            case 1:
                Intent i1 = new Intent(MainActivity.this,Activity2.class);
                startActivity(i1);
                break;


            }
        }
    });

忘记在 Manifest 文件中声明这些活动。

 <activity android:name="packageName.Class1"></activity>
 <activity android:name="packageName.Class2"></activity>

Activity1 的代码:

import android.view.View.OnClickListener;
import android.widget.Button;

public class Activity1extends Activity{

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

    btnActivity1 = (Button) findViewById(R.id.btnID_in_XML);//make a button in activity_main and assign it an id like i did here.
    btnActivity1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent i = new Intent(Activity1.this,Class2.class);
            startActivity(i);
        }
    });
}

通过这种方式,您可以从通过单击列表打开的活动中打开活动...

【讨论】:

  • 不是我点击列表项的时候。单击列表视图项后,打开的活动包含一个按钮。该按钮单击应该打开一个新活动。打开后的每个列表视图项目都包含一个应该打开不同活动的按钮。希望你继续。请帮帮我
  • 伙计,这很简单,在 Activity1 和 Activity2 中添加一个按钮,然后从这些 Activity 中对按钮进行编码以打开另一个 Activity..!
  • 但我要添加按钮的活动是单击列表视图项时打开的活动。所以从字面上看,我只能在 XML 中定义一个按钮。所以请帮帮我,伙计!
  • 兄弟,那是怎么回事,这很简单,我已经将所有代码放在那里,让 listview 将 onitemCLickListener 放在它上面,从该列表中打开不同的活动,然后在这些活动中创建一个按钮,然后在该按钮的 onClickListener 打开另一个活动。!为什么你会感到困惑并让我也感到困惑:p:D
猜你喜欢
  • 1970-01-01
  • 2015-04-08
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
相关资源
最近更新 更多