在列表行中多次单击
Multiple click in list row
我在 Android 中有一个 ListView
。每个列表项都有 2 个文本视图。如果我点击一个 TextView
我想打开一个 Activity
如果我点击另一个我想做另一件事。
我的适配器代码是这样的:
public class LazyAdapterHelpCentersAlava extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
HashMap<String, String> song;
Typeface tf;
Context context;
public LazyAdapterHelpCentersAlava(Activity a, ArrayList<HashMap<String, String>> d, String font) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
tf = Typeface.createFromAsset(activity.getAssets(), font);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row_help_centers, null);
//TextView id = (TextView)vi.findViewById(R.id.id); // title
TextView title = (TextView)vi.findViewById(R.id.nombre); // title
TextView localizacion = (TextView)vi.findViewById(R.id.localizacion);
TextView email = (TextView)vi.findViewById(R.id.email);
TextView web = (TextView)vi.findViewById(R.id.web);
song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(Help.TAG_NOMBRE));
web.setText(song.get(Help.TAG_TELEFONO));
localizacion.setText(song.get(Help.TAG_DIRECCION));
email.setText(song.get(Help.TAG_EMAIL));
title.setTypeface(tf);
web.setTypeface(tf);
localizacion.setTypeface(tf);
email.setTypeface(tf);
web = (TextView)vi.findViewById(R.id.web);
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Need to start an Activity here
}
});
return vi;
}
}
我已经在 web
上安装了点击监听器,但是,我不知道如何打开 Activity,因为它说的是这样的错误 方法 startActivity(Intent)
未定义类型 new View.OnClickListener(){}
有人可以帮助我吗?非常感谢。
使用适配器上下文
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null){
context = parent.getContext();
//other code
}
然后
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent redirect = new Intent(context,New.class);
context.startActivity(redirect);
}
});
试试这个,因为您在构造函数中将上下文作为 Activity a
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent redirect = new Intent(activity,New.class);
activity.startActivity(redirect);
}
});
如果您的适配器是 MainActivity
中的嵌套 class,那么您需要执行类似的操作。
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newActivity = new Intent(MainActivity.this, NewActivity.class);
startActivity(newActivity);
}
});
如果您的适配器不是 MainActivity
中的嵌套 class,您需要先将 Activity
的 Context
传递给 LazyAdapterHelpCentersAlava
然后使用 Context
启动 Activity
。
public class LazyAdapterHelpCentersAlava extends BaseAdapter {
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
HashMap<String, String> song;
Typeface tf;
Context context;
public LazyAdapterHelpCentersAlava(Context ctx, ArrayList<HashMap<String, String>> d, String font) {
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
tf = Typeface.createFromAsset(activity.getAssets(), font);
context = ctx; // Initialize the context here.
}
// .. Here are the other functions ... Omitted for clarity
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row_help_centers, null);
// Here are the other lines in getView function. Omitted for clarity
web = (TextView)vi.findViewById(R.id.web);
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Need to start an Activity here
Intent newActivity = new Intent(context, NewActivity.class);
context.startActivity(newActivity);
}
});
return vi;
}
}
在 oncreate() 方法中添加这一行
this.context=this;
在 web Onclick 方法下添加这一行
Intent i = new Intent(context,NextActivity.class);
context.startActivity(i);
下一个Activity是Activity你要去的地方
使用上下文,
context.startActivity(intent);
在您的 onClick() 方法中,添加:
Intent startActivity=new Intent("abc.Xyz");
startActivity(newActivity);
在您的 AndroidManifest.xml 中,添加:
<activity android:name=".Xyz"
android:label="@string/app_name">
<intent-filter>
<action android:name="abc.XYZ" />
<category android:name="android.intent.action.DEFAULT" />
</intent-filter>
</activity>
注意:上面代码中Xyz是你要启动的activity的ClassName,abc是Activity 文件所在的 PackageName。
我在 Android 中有一个 ListView
。每个列表项都有 2 个文本视图。如果我点击一个 TextView
我想打开一个 Activity
如果我点击另一个我想做另一件事。
我的适配器代码是这样的:
public class LazyAdapterHelpCentersAlava extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
HashMap<String, String> song;
Typeface tf;
Context context;
public LazyAdapterHelpCentersAlava(Activity a, ArrayList<HashMap<String, String>> d, String font) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
tf = Typeface.createFromAsset(activity.getAssets(), font);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row_help_centers, null);
//TextView id = (TextView)vi.findViewById(R.id.id); // title
TextView title = (TextView)vi.findViewById(R.id.nombre); // title
TextView localizacion = (TextView)vi.findViewById(R.id.localizacion);
TextView email = (TextView)vi.findViewById(R.id.email);
TextView web = (TextView)vi.findViewById(R.id.web);
song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(Help.TAG_NOMBRE));
web.setText(song.get(Help.TAG_TELEFONO));
localizacion.setText(song.get(Help.TAG_DIRECCION));
email.setText(song.get(Help.TAG_EMAIL));
title.setTypeface(tf);
web.setTypeface(tf);
localizacion.setTypeface(tf);
email.setTypeface(tf);
web = (TextView)vi.findViewById(R.id.web);
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Need to start an Activity here
}
});
return vi;
}
}
我已经在 web
上安装了点击监听器,但是,我不知道如何打开 Activity,因为它说的是这样的错误 方法 startActivity(Intent)
未定义类型 new View.OnClickListener(){}
有人可以帮助我吗?非常感谢。
使用适配器上下文
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null){
context = parent.getContext();
//other code
}
然后
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent redirect = new Intent(context,New.class);
context.startActivity(redirect);
}
});
试试这个,因为您在构造函数中将上下文作为 Activity a
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent redirect = new Intent(activity,New.class);
activity.startActivity(redirect);
}
});
如果您的适配器是 MainActivity
中的嵌套 class,那么您需要执行类似的操作。
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent newActivity = new Intent(MainActivity.this, NewActivity.class);
startActivity(newActivity);
}
});
如果您的适配器不是 MainActivity
中的嵌套 class,您需要先将 Activity
的 Context
传递给 LazyAdapterHelpCentersAlava
然后使用 Context
启动 Activity
。
public class LazyAdapterHelpCentersAlava extends BaseAdapter {
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
HashMap<String, String> song;
Typeface tf;
Context context;
public LazyAdapterHelpCentersAlava(Context ctx, ArrayList<HashMap<String, String>> d, String font) {
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
tf = Typeface.createFromAsset(activity.getAssets(), font);
context = ctx; // Initialize the context here.
}
// .. Here are the other functions ... Omitted for clarity
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.list_row_help_centers, null);
// Here are the other lines in getView function. Omitted for clarity
web = (TextView)vi.findViewById(R.id.web);
web.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Need to start an Activity here
Intent newActivity = new Intent(context, NewActivity.class);
context.startActivity(newActivity);
}
});
return vi;
}
}
在 oncreate() 方法中添加这一行
this.context=this;
在 web Onclick 方法下添加这一行
Intent i = new Intent(context,NextActivity.class);
context.startActivity(i);
下一个Activity是Activity你要去的地方
使用上下文,
context.startActivity(intent);
在您的 onClick() 方法中,添加:
Intent startActivity=new Intent("abc.Xyz");
startActivity(newActivity);
在您的 AndroidManifest.xml 中,添加:
<activity android:name=".Xyz"
android:label="@string/app_name">
<intent-filter>
<action android:name="abc.XYZ" />
<category android:name="android.intent.action.DEFAULT" />
</intent-filter>
</activity>
注意:上面代码中Xyz是你要启动的activity的ClassName,abc是Activity 文件所在的 PackageName。