简体   繁体   English

如何从ListView启动新布局(活动)

[英]How to start New Layout (activity) from ListView

When I click the ListView , I'd like to start a new Activity 当我单击ListView ,我想开始一个新的Activity

Here is my MainActivity.java 这是我的MainActivity.java

package com.theheran.listviewicon;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity {
    //Declarasi Array Menu dan gambar
    ListView list;
    String[] menu = {
            "@The_Heran",
            "www.theheran.com",
            "Add",
            "Delete",
            "Next",
            "Back",
            "Find",
            "Warning"
    } ;
    Integer[] imageId = {
            R.drawable.ic_launcher,
            R.drawable.signal,
            R.drawable.add,
            R.drawable.trash,
            R.drawable.next,
            R.drawable.back,
            R.drawable.find,
            R.drawable.warning
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        CustomListView adapter = new
        CustomListView(MainActivity.this, menu, imageId);

        list=(ListView)findViewById(R.id.list);

        list.setAdapter(adapter);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                Toast.makeText(MainActivity.this, "You Clicked at " +menu[+ position], Toast.LENGTH_SHORT).show();

      // HERE THE PROBLEM     (Intent)           
                Intent intent = new CustomListView(MainActivity.this,); 
                startActivity(intent);


            }
        });
    }

}

My CustomListView 我的CustomListView

package com.theheran.listviewicon;

import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomListView extends  ArrayAdapter<String> {
    //Declarasi
    private final Activity context;
    private final String[] web;
    private final Integer[] imageId;

    public CustomListView(Activity context,String[] web, Integer[] imageId) {
        super(context, R.layout.list_single_data, web);
        this.context = context;
        this.web = web;
        this.imageId = imageId;

    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
            LayoutInflater inflater = context.getLayoutInflater();
            //Load Custom Layout untuk list 
            View rowView= inflater.inflate(R.layout.list_single_data, null, true);
            //Declarasi komponen
            TextView txtTitle = (TextView) rowView.findViewById(R.id.txtList);
            ImageView imageView = (ImageView) rowView.findViewById(R.id.imgIcon);

            //Set Parameter Value
            txtTitle.setText(web[position]);
            imageView.setImageResource(imageId[position]);

            return rowView;
        }
}

// HERE THE PROBLEM (Intent) //这里是问题(意图)
Intent intent = new CustomListView(MainActivity.this,); Intent intent =新的CustomListView(MainActivity.this,); startActivity(intent); startActivity(intent);

Here you are trying to use a wrong structure. 在这里,您尝试使用错误的结构。 Use this: 用这个:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
MainActivity.this.startActivity(intent );

Try this way , 试试这个

list.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                Toast.makeText(MainActivity.this, "You Clicked at " +position , Toast.LENGTH_SHORT).show();
                Intent MoveToNext = new Intent(getApplicationContext(), Your_Next_Activity.class);
                startActivity(MoveToNext);

            }
        });

This is how I have done it. 这就是我所做的。 You start a new activity using the startActivityForResult(intent, 2); 您可以使用startActivityForResult(intent, 2);开始新的活动startActivityForResult(intent, 2); Where you throw a intent and a number (number that you check for when you go back to the starting page). 在何处输入意图和数字(返回起始页时检查的数字)。

private void registerButtonClickList() {
        ListView list = (ListView) findViewById(R.id.listView);
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                             

                Intent intent = new Intent(InThisClass.this, GoingToThisClass.class);
                intent.putExtra("Position", position);
                startActivityForResult(intent, 0);

            }
        });
    }

Use this where in the same class as you started the other one form the list. 在与您启动另一个班级的列表相同的班​​级中使用此名称。 This is needed since you are expecting a return when you start with startActivityForResult() 这是必需的,因为从startActivityForResult()开始时期望返回

protected void onActivityResult(int requestCode, int resultCode, Intent data)                   
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {                                                                    
            if (resultCode == Activity.RESULT_OK) {                                                 
                //See what u should do using the requestCode
                //and check if it ended OK 
            }
            if (resultCode == Activity.RESULT_CANCELED) {     
                //what you do when canceled
            }
        }
}

And in the activity that you started you need to end with this because you are expected to return something. 在开始的活动中,您需要以此结束,因为您应该返回一些东西。 This you do by using setResult() . 您可以使用setResult()完成此操作。

Button btn = (Button) findViewById(R.id.btn);

btnCANCEL.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.CUPCAKE)
@Override
public void onClick(View v) {
        Intent intent = new Intent();
        setResult(Activity.RESULT_OK, intent);
        //intent.putExtra("something", something); if you need to send something back
        finish();
        }
});

Hope this helps! 希望这可以帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM