如何在android工作室中link两个资源文件?
how to link two resource files in android studio?
使用 2 个资源文件(或 2 个布局)制作 activity。
1 个包含从数据库中检索 arraylist 的表单和
第二个在列表视图中显示该列表..
如何link这两个资源文件?我想使用充气机..但不知道在哪里使用?在设置适配器之后或在 onclick() 中调用 getter 之前
这是我试过的:
MainActivity.java
package com.example.bsitn_000.datalist;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity implements View.OnClickListener {
private RelativeLayout layoutToAdd;
EditText NoP;
EditText eTime;
EditText lTime;
EditText date;
Button check;
ListView listView;
ArrayAdapter<String> adapter;
ArrayList<String> ResList;
protected SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layoutToAdd = (RelativeLayout)findViewById(R.id.existedlayout);
createDatabase();
NoP = (EditText)findViewById(R.id.editText4);
eTime = (EditText)findViewById(R.id.editText);
lTime = (EditText)findViewById(R.id.editText2);
date = (EditText)findViewById(R.id.editText3);
listView = (ListView)findViewById(R.id.list_view);
check =(Button)findViewById(R.id.button);
check.setOnClickListener(this);
}
public void createDatabase() {
db = openOrCreateDatabase("Restaurant.db", Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS reserve(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
" NoP Text, eTime Text, lTime Text, date Text, res Text);");
}
public ArrayList<String> getResList(){
String n = NoP.getText().toString();
String e = eTime.getText().toString();
String l = lTime.getText().toString();
String d = date.getText().toString();
ResList = new ArrayList<String>();
String query = "SELECT res FROM reserve WHERE NoP = '"+n+"' AND eTime = '"+e+"'AND lTime = '"+l+"'AND date = '"+d+"'";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
ResList.add(cursor.getString(cursor.getColumnIndex("res")));
}while (cursor.moveToNext());
}
return ResList;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void callingMore(){
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View view = inflater.inflate(R.layout.activity_mylist,null);
layoutToAdd.addView(view);
}
@Override
public void onClick(View v) {
if (v == check){
getResList();
if (ResList.size()!=0){
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ResList);
listView.setAdapter(adapter);
callingMore();
}
else {
Toast.makeText(this,"no record",Toast.LENGTH_SHORT).show();
}
}
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/existedlayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="40dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/editText2"
android:layout_alignRight="@+id/editText2"
android:layout_alignEnd="@+id/editText2"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/c"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="#bbff99" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editText4"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
</RelativeLayout>
activity_mylist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
我认为您在编辑文本中填写数据并点击提交按钮后需要一种布局。如果是这样,您可以在创建 activity 时首先设置布局 activity_main.xml,即 onCreate,一旦您填写并点击提交按钮,在单击按钮时更改布局,即 activity_mylist.xml
例如
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnSubmit = (Button) findViewById(R.id.button);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_list);
ListView lv = (ListView) findViewById(R.id.listView);
}
}
这是不合适的,但如果您只想以这种方式使用它,那么您可以继续。理想情况下,您应该制作两个不同的 activity 并且在单击按钮时您应该在 Intent 的帮助下移动到新的 activity。希望这有帮助。
要具体回答您的问题 在哪里 您应该扩充 ListView,您应该在 设置适配器之前 扩充 ListView。
由于 inflation 是在 callingMore()
中完成的,而不是在 listView.setAdapter(adapter);
之后调用 callingMore()
,您应该在 [=42= 之前调用它] 如下所示设置适配器。
@Override
public void onClick(View v) {
if (v == check){
ResList = getResList();
if (ResList.size()!=0){
callingMore();
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ResList);
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
else {
Toast.makeText(this,"no record",Toast.LENGTH_SHORT).show();
}
}
看来你在调用listView.setAdapter(adapter)
之前忘记设置listView = (ListView) findViewById(R.id.listView);
;。这将导致 NullPointerException,并且可能是您对应该在哪里执行 inflation 感到困惑的原因。您只能在 R.id.listView 膨胀后获得对您的 ListView 的引用。
您还忘记了将 getResList() 的 return 值分配给 ResList。它应该是 ResList = getResList();
而不是 getResList();
此外,onCreate() 中可能有错字,listView = (ListView)findViewById(R.id.list_view)
;。您可能指的是 listView = (ListView)findViewById(R.id.listView);
。
哦,在调用 More() 的两行中,
View view = inflater.inflate(R.layout.activity_mylist,null);
layoutToAdd.addView(view);
可以仅替换为 View view = inflater.inflate(R.layout.activity_mylist, layoutToAdd);
,因为将 layoutToAdd 放在第二个参数中会将其设置为 view
的父视图。
使用 2 个资源文件(或 2 个布局)制作 activity。 1 个包含从数据库中检索 arraylist 的表单和 第二个在列表视图中显示该列表.. 如何link这两个资源文件?我想使用充气机..但不知道在哪里使用?在设置适配器之后或在 onclick() 中调用 getter 之前 这是我试过的:
MainActivity.java
package com.example.bsitn_000.datalist;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity implements View.OnClickListener {
private RelativeLayout layoutToAdd;
EditText NoP;
EditText eTime;
EditText lTime;
EditText date;
Button check;
ListView listView;
ArrayAdapter<String> adapter;
ArrayList<String> ResList;
protected SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layoutToAdd = (RelativeLayout)findViewById(R.id.existedlayout);
createDatabase();
NoP = (EditText)findViewById(R.id.editText4);
eTime = (EditText)findViewById(R.id.editText);
lTime = (EditText)findViewById(R.id.editText2);
date = (EditText)findViewById(R.id.editText3);
listView = (ListView)findViewById(R.id.list_view);
check =(Button)findViewById(R.id.button);
check.setOnClickListener(this);
}
public void createDatabase() {
db = openOrCreateDatabase("Restaurant.db", Context.MODE_PRIVATE,null);
db.execSQL("CREATE TABLE IF NOT EXISTS reserve(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
" NoP Text, eTime Text, lTime Text, date Text, res Text);");
}
public ArrayList<String> getResList(){
String n = NoP.getText().toString();
String e = eTime.getText().toString();
String l = lTime.getText().toString();
String d = date.getText().toString();
ResList = new ArrayList<String>();
String query = "SELECT res FROM reserve WHERE NoP = '"+n+"' AND eTime = '"+e+"'AND lTime = '"+l+"'AND date = '"+d+"'";
Cursor cursor = db.rawQuery(query,null);
if (cursor.moveToFirst()){
do {
ResList.add(cursor.getString(cursor.getColumnIndex("res")));
}while (cursor.moveToNext());
}
return ResList;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void callingMore(){
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
View view = inflater.inflate(R.layout.activity_mylist,null);
layoutToAdd.addView(view);
}
@Override
public void onClick(View v) {
if (v == check){
getResList();
if (ResList.size()!=0){
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ResList);
listView.setAdapter(adapter);
callingMore();
}
else {
Toast.makeText(this,"no record",Toast.LENGTH_SHORT).show();
}
}
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/existedlayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="40dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText3"
android:layout_below="@+id/editText2"
android:layout_alignRight="@+id/editText2"
android:layout_alignEnd="@+id/editText2"
android:inputType="text"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/c"
android:id="@+id/button"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="#bbff99" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editText4"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/editText"
android:layout_alignEnd="@+id/editText" />
</RelativeLayout>
activity_mylist.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_gravity="center_horizontal" />
</LinearLayout>
我认为您在编辑文本中填写数据并点击提交按钮后需要一种布局。如果是这样,您可以在创建 activity 时首先设置布局 activity_main.xml,即 onCreate,一旦您填写并点击提交按钮,在单击按钮时更改布局,即 activity_mylist.xml
例如
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnSubmit = (Button) findViewById(R.id.button);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_list);
ListView lv = (ListView) findViewById(R.id.listView);
}
}
这是不合适的,但如果您只想以这种方式使用它,那么您可以继续。理想情况下,您应该制作两个不同的 activity 并且在单击按钮时您应该在 Intent 的帮助下移动到新的 activity。希望这有帮助。
要具体回答您的问题 在哪里 您应该扩充 ListView,您应该在 设置适配器之前 扩充 ListView。
由于 inflation 是在 callingMore()
中完成的,而不是在 listView.setAdapter(adapter);
之后调用 callingMore()
,您应该在 [=42= 之前调用它] 如下所示设置适配器。
@Override
public void onClick(View v) {
if (v == check){
ResList = getResList();
if (ResList.size()!=0){
callingMore();
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,ResList);
listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
else {
Toast.makeText(this,"no record",Toast.LENGTH_SHORT).show();
}
}
看来你在调用listView.setAdapter(adapter)
之前忘记设置listView = (ListView) findViewById(R.id.listView);
;。这将导致 NullPointerException,并且可能是您对应该在哪里执行 inflation 感到困惑的原因。您只能在 R.id.listView 膨胀后获得对您的 ListView 的引用。
您还忘记了将 getResList() 的 return 值分配给 ResList。它应该是 ResList = getResList();
而不是 getResList();
此外,onCreate() 中可能有错字,listView = (ListView)findViewById(R.id.list_view)
;。您可能指的是 listView = (ListView)findViewById(R.id.listView);
。
哦,在调用 More() 的两行中,
View view = inflater.inflate(R.layout.activity_mylist,null);
layoutToAdd.addView(view);
可以仅替换为 View view = inflater.inflate(R.layout.activity_mylist, layoutToAdd);
,因为将 layoutToAdd 放在第二个参数中会将其设置为 view
的父视图。