• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Custom List View Open New Activities

SDTricker

Lurker
Hey everyone. Here is my code below. I have everything working. Got it to display the pictures and text in a list view. Only issue is that I want to be able to click on one of the list items and have it open an activity. When I added that part in, I get an error that states,
"Error:(44, 45) error: no suitable constructor found for Intent(<anonymous OnItemClickListener>,Class)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; <anonymous OnItemClickListener> cannot be converted to String)
constructor Intent.Intent(Context,Class<?>) is not applicable
(argument mismatch; <anonymous OnItemClickListener> cannot be converted to Context)"

Here is my code:

Code:
package com.example.matt.nootropicahandbook;

import android.net.Uri;
import android.app.Activity;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.content.Intent;


public class Biohack extends Activity
{
    ListView list;

    String[] itemname = {"Nootropics", "Supplements", "Metabolic Enhancement","Stacks", "Neuro Stimulation", "Diet", "Stay Away From",};
    Integer[] imgid={R.drawable.piracetam1, R.drawable.piracetam2, R.drawable.piracetam3,
            R.drawable.piracetam4, R.drawable.piracetam5, R.drawable.piracetam6, R.drawable.piracetam7,};
    String[] classNames = {"Main", "Lifehack"};



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

        biohacksAdapter adapter=new biohacksAdapter(this, itemname, imgid, classNames);
        list=(ListView)findViewById(R.id.list);
        list.setAdapter(adapter);

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                String openClass = classNames[position];
                try{
                    Class selected = Class.forName("com.example.matt.nootropicahandbook."+openClass);
                    Intent selectedIntent = new Intent(this, selected);
                    startActivity(selectedIntent);
                }catch (ClassNotFoundException e)
                {
                    e.printStackTrace();
                }


            }
        });
    }
   
}





The error is on the line:
Code:
Intent selectedIntent = new Intent(this, selected);


And here is my adapter class for refrence
Code:
package com.example.matt.nootropicahandbook;


import android.app.Activity;
import android.content.Context;
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 biohacksAdapter extends ArrayAdapter<String>{


    private final Activity context;
    private final String[] itemname;
    private final Integer[] imgid;
    private final String[] classNames;

    public biohacksAdapter(Activity context,String[] itemname, Integer[] imgid, String[] classNames) {
        super(context,R.layout.custom_row, itemname);

        this.context = context;
        this.itemname = itemname;
        this.imgid = imgid;
        this.classNames = classNames;
    }


    public View getView(int position, View view, ViewGroup parent)
    {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.custom_row, null, true);


        TextView txtTitle = (TextView) rowView.findViewById(R.id.item);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        TextView extratxt = (TextView)  rowView.findViewById(R.id.textView1);

        txtTitle.setText(itemname[position]);
        imageView.setImageResource(imgid[position]);
        extratxt.setText("Description "+itemname[position]);
        return rowView;

    }
}
 
Back
Top Bottom