我正在尝试创建一个Android应用程序(新手)!
我的问题如下:
假设我是X大学的管理员
我需要列出每个不同点的课程清单。
例如:
现在假设学生进入第28点。
我的应用应该能够检测到有28分但低分的路线。那是;物理,数学和英语但不是医学!!!
任何人都可以帮我这个吗?我到处搜索但没有结果!
请大家好好做这件事!谢谢!
MainActivity.java
import android.os.Bundle;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class MainActivity extends Activity {
String[] courses = new String[]{
"Mathematics",
"Chemical Engineering",
"Civil Engineering",
"Agriculture",
"Law and Management",
"Sociology",
"Information and Communication Technologies",
"Computer Science",
"Information Systems",
"Software Engineering",
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.event2icon);
EditText editText = null;
editText=(EditText)findViewById(R.id.edit_text);
final String point=editText.getText().toString();
final int point_integer=Integer.parseInt(point);
final ListView courselist = (ListView)findViewById(R.id.courseNames);
LayoutInflater inflater = getLayoutInflater();
ViewGroup header = (ViewGroup)inflater.inflate(R.layout.listviewheader, courselist, false);
courselist.addHeaderView(header, null, false);
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, courses);
courselist.setAdapter(adapter);
courselist.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
//we use the items of the listview as title of the next activity
if((Integer.parseInt(String.valueOf(point_integer))<=10))
{
}
}
});
}
}
event2icon.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">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/edit_text"
android:text="Enter your points:"/>
<ListView
android:id="@+id/courseNames"
android:layout_width="match_parent"
android:layout_below="@+id/edit_text"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:dividerHeight="15.0sp"
>
</ListView>
</LinearLayout>
listviewheader.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
</LinearLayout>
答案 0 :(得分:3)
你应该能够执行他在答案中提到的所有步骤,否则,我害怕我只是给你一些不会教你的代码。
相反,我将为您提供其他答案中提到的部分。
您想要一个代表课程的课程,包括姓名和分数字段
这是一个简单的模型类。 Java课程的介绍教会了这些。
public class Course {
private String name;
private int points;
public Course(String name, int points) {
this.name = name;
this.points = points;
}
public String getName() {
return name;
}
public int getPoints() {
return points;
}
@Override
public String toString() {
return getName();
}
}
包含这些课程实例的列表
您只有字符串,而不是代码中列出的点数,那么您希望如何使用数字来过滤课程?以下是您列为数组的示例课程示例。
Course[] courses = new Course[]{
new Course("Medicine", 30),
new Course("Physics", 28),
new Course("Math", 24),
new Course("English", 20)
};
您需要一个活动,其中包含一个文本框,供学生输入数字
这需要您编写一些XML,您已经在event2icon.xml
中完成了。我建议您添加Button
,但是因为在EditText
内点击Enter会插入换行符。在创建时,您也可以只接受数字。这是我建议的完整XML。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_weight="1"
android:maxLines="1"
android:inputType="number"
android:layout_height="wrap_content"
android:hint="Enter your points"
android:id="@+id/editText"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Search"
android:id="@+id/btn_search"/>
</LinearLayout>
<ListView
android:id="@+id/courseNames"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
您需要将文本解析为整数
你知道如何做到这一点 - 问题,但你时这样做了吗?一旦加载了Activity,您发布的代码会立即从EditText
中获取文本,该文本将为空。您应该在单击按钮时从EditText
中提取文本。这将帮助您入门。
Button searchButton = (Button) findViewById(R.id.btn_search);
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
您需要迭代您定义的列表。通过使用小于或等于运算符&lt; =,您将找到所需的课程
这只是您定义的Courses数组的简单for-each循环。找到Course对象后,将其添加到适配器。您还应该知道,为了做到这一点,您需要将Course[]
转换为List<Course>
,否则您将收到错误消息。
List<Course> courseList = new ArrayList<Course>(Arrays.asList(courses));
// initialize the adapter with courseList instead of courses
final ArrayAdapter<Course> adapter = new ArrayAdapter<Course>(this, android.R.layout.simple_list_item_1, courseList);
// this code inside the Button's onClick
int points = Integer.parseInt(editText.getText().toString());
for (Course c : courses) {
if (c.getPoints() <= points) {
adapter.add(c);
}
}
使用ListAdapter很好地显示列表
你已经拥有ArrayAdapter
,所以你在这里很好。但最后一个细节是,当您单击Button
时,您应首先clear
适配器,然后再将课程添加回其中。否则,您将获得重复项。
答案 1 :(得分:2)
你没有找到任何东西,因为你需要解决问题并研究每一点:
您想要一个代表课程的课程,包括姓名和分数 字段。
包含这些课程实例的列表(如您所列)。
您需要一个包含供学生输入的文本框的活动 号码进入。
您需要将文本解析为整数。
您需要迭代您定义的列表。
通过使用小于或等于运算符<=
,您将找到
你需要的课程。
在Android中你应该使用a
ListAdapter
很好地显示清单。