私はこの質問に対する回答をかなり長く探していますが、まだ見つかりませんでした。 私はSQLiteDatabaseでプロジェクトをやっています。私のCustomAdapterにSQLiteOpenHelperを割り当てる以外は、すべて正常に動作します。私はAndroidスタジオとそのJavaのすべてで約2ヶ月ですので、私はちょうどインターネット上のほとんどすべてを検索しています。ここに私のプロジェクトの断片があります。カスタムアダプタでSQLiteOpenHelperを割り当てる方法は?
SQLiteOpenHelper:
public class ActivitiesDataBase extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "database.db";
public static final String ACTIVITIES_COLUMN_ID = "id";
public static final String ACTIVITIES_TABLE_NAME = "create_activity";
public static final String ACTIVITIES_COLUMN_NAME = "activity";
public static final String ACTIVITIES_COLUMN_NUMBER = "number";
public static final String ACTIVITIES_COLUMN_DESCRIPTION = "description";
//Created command to create items
public void addactivity(String activity, String description, String number){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv =new ContentValues();
cv.put(ACTIVITIES_COLUMN_NAME, activity);
cv.put(ACTIVITIES_COLUMN_NUMBER, number);
cv.put(ACTIVITIES_COLUMN_DESCRIPTION, description);
db.insert(ACTIVITIES_TABLE_NAME, null, cv);
db.close();
}
//Constructor
public ActivitiesDataBase(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE create_activity" +
"(id INTEGER PRIMARY KEY, " +
"activity TEXT, " +
"number TEXT, " +
"description TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS create_activity");
}
}
ActivityMainのごく一部:
public class MainActivity extends AppCompatActivity implements DrawerLocker {
//Assigning SQLiteOpenHelper, no errors, result is fine.
final ActivitiesDataBase db = new ActivitiesDataBase(this);
private SQLiteDatabase sql;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Here I call command addactivity and it works fine, because I
//assigned SQLiteOpenHelper well.
db.addactivity(activitysubject, activitydesc, activitynum);
}
}
そして、私のカスタムアダプタです:だから
public class CustomAdapter extends ArrayAdapter {
private List sarasas = new ArrayList();
public CustomAdapter(Context context, int resource) {
super(context, resource);
}
@Override
public void add(Object object) {
super.add(object);
sarasas.add(object);
}
@Override
public int getCount() {
return this.sarasas.size();
}
@Override
public Object getItem(int position) {
return this.sarasas.get(position);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
final Duomenys pavadinimas;
if (v == null){
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_layout, parent, false);
pavadinimas = new Duomenys();
//I have missed some unnecessary text here, hope it doesn't change
//contex a lot
//So, crap starts here. Don't mind that pavadinimas after dots.
//Basically it's written here similarly to MainActivity, but it
//shows errors because assigning is different :(
// (SQLiteOpenHelper assigning is below)
pavadinimas.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pavadinimas.db.addactivity(name, description, number);
}
});
v.setTag(pavadinimas);
}else {
pavadinimas = (Duomenys) v.getTag();
}
DataActivity perdavimas = (DataActivity) this.getItem(position);
pavadinimas.txt1.setText(perdavimas.getNamee());
return v;
}
static class Duomenys{
SQLiteDatabase sql;
//Here i don't know how to assign my SQLiteOpenHelper,
// so actually, I NEED HELP HERE
ActivitiesDataBase db;
}
}
、私は本当に、カスタムアダプタで(可能であれば)SQLiteOpenHelperを割り当てる方法を、知っていただきたいと思います。どんな援助も感謝する。
これは私の編集版です。すべては静的クラスDuomenysと罰金ですが、いくつかの下線は、その部分にあります:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
//Here it underlines mContext and i really don't know from where to get it
final Duomenys pavadinimas = new Duomenys(mContext);
if (v == null){
LayoutInflater inflater = (LayoutInflater) this.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.listview_layout, parent, false);
//Then it underlines() after Duomenys
pavadinimas = new Duomenys();
pavadinimas.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pavadinimas.db.assactivity(name, description, number);
}
});
v.setTag(pavadinimas);
}else {
//And it underlines pavadinimas, saying
//"Cannot assign a value to final variable 'pavadinimas' "
pavadinimas = (Duomenys) v.getTag();
}
質問のJavaScriptタグをJavaタグと入れ替えました。彼らは2つの非常に異なる言語です。ちょうどそう知っている:) –
ああ私の神!とにかく、uslesを感じるとにかく、ありがとう –
ところで、あなたはJavaを知っている人、javaScriptではないですか? –