gpt4 book ai didi

android - 如何在自定义适配器中使用非静态 How “getSystemService”?

转载 作者:行者123 更新时间:2023-11-29 01:43:03 27 4
gpt4 key购买 nike

在 Android eclipse 中当我想使用非静态方法“getSystemService”时,它显示错误:

Cannot make a static reference to the non-static method getContext() from the type ArrayAdapter

ArrayAddapter.java :

package ir.redreactor.app.Com.NovinEr;

import java.util.ArrayList;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;


public class AdapterNote extends ArrayAdapter<StructNote> {

public AdapterNote(ArrayList<StructNote> array) {
super(G.context, R.layout.adapter_notes, array);
}


private static class ViewHolder {

public ViewGroup LayoutRt;
public TextView txtTitle;
public TextView txtSort;
public TextView txtTableName;
public TextView txtID;
public TextView txtpos;
public TextView txtDetail;


public ViewHolder(View view) {
txtTitle = (TextView) view.findViewById(R.id.txtTitleAN);
txtSort = (TextView) view.findViewById(R.id.txtSortAN);
txtTableName = (TextView) view.findViewById(R.id.txtTableNameAN);
txtID = (TextView) view.findViewById(R.id.txtIDAN);
txtpos = (TextView) view.findViewById(R.id.txtpos);
txtDetail = (TextView) view.findViewById(R.id.txtDetailAN);
LayoutRt = (ViewGroup) view.findViewById(R.id.layout_Rt);
}


private void copy(String strdata) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(strdata);
}


public void fill(ArrayAdapter<StructNote> Adapter, StructNote Item, final int position) {
txtTitle.setText(Item.title);
txtDetail.setText(Item.detail);
txtSort.setText(Item.Sort.toString());
txtTableName.setText(Item.nameOfTable);
txtID.setText(Item.intID.toString());
txtpos.setText("" + position);
LayoutRt.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
copy(txtTitle.getText().toString() + "\n" + txtDetail.getText().toString());
}
});
}
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
StructNote item = getItem(position);
final ViewHolder holder;
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_notes, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}

结构说明.java :

package ir.redreactor.app.Com.NovinEr;

import android.app.Activity;
import android.content.Context;


public class StructNote {

public String nameOfTable;
public Integer Sort;
public Integer intID;
public Boolean Favorite;
public String title;
public String detail;

G.java 是全局类G.java 类:

public class G extends Application {

// Creating Context
public static Context context;
// Creating Log
public static String LOG_TAG = "RR1";
public static String LOG_ERR = "NVR";
//Creating Current Activity Finder
public static Activity currentActivity;

@Override
public void onCreate() {
super.onCreate();
context = this.getApplicationContext();
}
}

当我将“getSystemService”与“getContext()”一起使用时,它显示以下错误:AdapterNote.ViewHolder 类型未定义方法 getSystemService(String)

--------------------------------编辑

谢谢你 Raghunandan所以 AdapterNote.java 将是:

package ir.redreactor.app.Com.NovinEr;

import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;


public class AdapterNote extends ArrayAdapter<StructNote> {

public LayoutInflater mInflater;
public static Context context;


public AdapterNote(ArrayList<StructNote> array, Context context) {
super(context, R.layout.adapter_notes, array);
mInflater = LayoutInflater.from(context);
this.context = context;
}


private static class ViewHolder {

public ViewGroup LayoutRt;
public TextView txtTitle;
public TextView txtSort;
public TextView txtTableName;
public TextView txtID;
public TextView txtpos;
public TextView txtDetail;


public ViewHolder(View view) {
txtTitle = (TextView) view.findViewById(R.id.txtTitleAN);
txtSort = (TextView) view.findViewById(R.id.txtSortAN);
txtTableName = (TextView) view.findViewById(R.id.txtTableNameAN);
txtID = (TextView) view.findViewById(R.id.txtIDAN);
txtpos = (TextView) view.findViewById(R.id.txtpos);
txtDetail = (TextView) view.findViewById(R.id.txtDetailAN);
LayoutRt = (ViewGroup) view.findViewById(R.id.layout_Rt);
}


private void copy(String strdata) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(strdata);
}


public void fill(ArrayAdapter<StructNote> Adapter, StructNote Item, final int position) {
txtTitle.setText(Item.title);
txtDetail.setText(Item.detail);
txtSort.setText(Item.Sort.toString());
txtTableName.setText(Item.nameOfTable);
txtID.setText(Item.intID.toString());
txtpos.setText("" + position);
LayoutRt.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
copy(txtTitle.getText().toString() + "\n" + txtDetail.getText().toString());
}
});
}
}


@Override
public View getView(final int position, View convertView, ViewGroup parent) {
StructNote item = getItem(position);
final ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.adapter_notes, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}

最佳答案

将上下文传递给适配器构造函数

new AdapterNote(ArrayList<StructNote> array,ActivityName.this)

然后

LayoutInfalter mInflater; 
Context context;
public AdapterNote(ArrayList<StructNote> array,Context context) {
super(context, R.layout.adapter_notes, array);
mInfalter = LayoutInfalter.from(context);
this.context =context;
}

然后

 convertView = mInflater.inflate(R.layout.adapter_notes, parent, false);

然后

 android.text.ClipboardManager clipboard = (android.text.ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);

关于android - 如何在自定义适配器中使用非静态 How “getSystemService”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23196859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com